[IOS] Package rejected - App uses or references non-public API

Hi guys, after a while we’re finally launching our project in IOS, the package passes the test flight requirements, but the launch submission was rejected due the use or reference of a non public api, it supoust to be:

PrivateFrameworks/MetalTools.framework

I tried finding an answer in the hub with no luck, ¿any idea about that?, im pretty worried because we still submitting trying to fix de issue and the violation persist they can shutdown our itunes account.

We’re using:

There is the full apple response:

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. Resources For
information on the “nm” tool, please
review the “nm tool” Xcode manual
page. If there are no alternatives for
providing the functionality your app
requires, you can file an enhancement
request.

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://forums.unrealengine.com/unreal-engine/announcements-and-releases/1410408-unreal-engine-bug-submission-form

Thanks

Great news!, thanks so much.

My project rejected too. Is there any solution?

This has been fixed in 4.19. However, if you need the fix right now, it is in the Release-4.19 stream. This should also already be mirrored in the 4.19 GitHUB branch. That being said the fix is:

#if !UE_BUILD_SHIPPING
	Class MTLDebugDevice = NSClassFromString(@"MTLDebugDevice");
	if ([Device isKindOfClass:MTLDebugDevice])
	{
		Features |= EMetalFeaturesValidation;
	}
#endif

That ifdef code should be added around line 135 in MetalCommandQueue.cpp to make it look like the above snippet.

-Pete

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

Editing the engine source fixed the problem. Thanks!

How to edit the source file, I also encountered this problem in version 4.20.