Issue

We found that your app uses one or more non-public APIs, which is not in compliance with the App Store Review Guidelines. The use of non-public APIs is not permissible because it can lead to a poor user experience should these APIs change.

We found the following non-public API in your app:

pages

If you have defined methods in your source code with the same names as the above-mentioned APIs, we suggest altering your method names so that they no longer collide with Apple's private APIs to avoid your application being flagged in future submissions.

Additionally, one or more of the above-mentioned APIs may reside in a static library included with your application. If you do not have access to the library's source, you may be able to search the compiled binary using "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 techniques can help you narrow down where the problematic code resides.

We appreciate that you may have made the precautions in your code for using non-public APIs, however, there is no way to fully accommodate the unknown. It is for this reason, that we do not permit the use of non-public APIs in App Store apps.<!>

Solution

This is not one of the leading reasons for app rejection but can be tricky to find as the error/email is a bit vague as it only tells a name of the API and not where it is used. It is not necessarily that you have used the non-public API directly in your code, it could be called/used from a third party library or framework that you are using as part of your project. So review all such places.

Also if you look into the email it mentions about some of the command line tools like strings or otool, these can also help to find out where that non-public API may have been used.

Once you find out, try to not use that API or use a workaround API and then finally submit the app for review.