[iOS] Rejected "non-public APIs: PrivateFrameworks/MetalTools.framework"

My iOS project rejected by non-public APIs: PrivateFrameworks/MetalTools.framework

How can I fix it?

---------------------------------------------- iOS reject message ---------------------------

Guideline 2.5.1 - Performance - Software Requirements

Your app uses or references the following non-public APIs:

PrivateFrameworks/MetalTools.framework

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

Next Steps

If you are using third-party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries’ source, you may be able to search the compiled binary using the “strings” or “otool” command line tools. The “strings” tool can output a list of the methods that the library calls and “otool -ov” will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the “nm” tool to verify if any third-party libraries are calling these APIs.

Your app uses or references the following non-public APIs:

PrivateFrameworks/MetalTools.framework (MTLDebugDevice)

Any help on this issue would be greatly appreciated.

I have shipped a game before in UE 4.18; but not with the latest point update; so it’s possible a bug was introduced within the latest 4.18.3 update.

I have posted this issue again in Bug Reports, instead of in Blueprint Scripting, since I believe it to be an Bug in the Engine: iOS app rejected due to use of non-public API: MetalTools.framework - Mobile - Epic Developer Community Forums

I’ve found a pending pull request that appears to have fixed this issue by wrapping the offending code in a #if !UE_BUILD_SHIPPING flag:

My project rejected same reason. Did you find any solution about it?

There appears to be a fix by wrapping the offending code with an #if !UE_BUILD_SHIPPING flag; this involves building a custom version of the Unreal Engine from source. I haven’t confirmed the fix works though. There’s more info at the pull request I mentioned in my earlier comment.

I don’t know. The pull request is still waiting for review, so it hasn’t been integrated yet. Hopefully we’ll hear from Epic soon.

You’re welcome!

Thank you very much!

Is there a chance for update to 4.18 ? Or I must use 4.19 preview.

Yes, the patch does help to pass the review.

This issue is fixed by a [pull request][1] submitted by [][2]. It was accepted and merged into 4.19 in commit ac514e7.

[1]:

Yeah! Thank you!
Its a good news.
But I dont know how use git hub. So I must wait a next 4.19.1.
By the way 4.18.4 has not hope?

I had an app rejected in an App Store Review for iOS due to the following:

Guideline 2.5.1 - Performance - Software Requirements

Your app uses or references the following non-public APIs:

_feedbackSupportLevel

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

how can i fix it?

I use version 4.20 and I also have this problem.

I haven’t had an issue with 4.21. Can you upgrade your project to the latest version of 4.21 (not always a simple task, I know)? That may fix the issue.

My iOS app just got rejected for this. My project is done with 4.27. The app has been released and continually updated for more than 1 year, since 4.26, and just now I am getting this.

Also, I publish 2 separate apps, with exactly the same backbone, but with different UI and content. One of them got approved for AppStore without any problems. The other one did not

Anyone know a solution to this?