iOS App Rejected : non-public APIs

非 Y 不嫁゛ 提交于 2019-11-27 12:32:34

问题


The same app has already been approved twice before but after some changes like set the image view and submitting the app again, Apple rejected my app for following errors:

Performance - 2.5.1

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

setResult: nextStarIndex

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.

How can a user test his/her application if it contains Private API's?

I am not using setResult: and nextStarIndex code anywhere in my project so what should I do?


回答1:


The last time I encountered this was because of a namespace collision between methods in my code and private methods in the Cocoa API. You can also use grep to find out exactly where you're using those selectors:

grep -R 'setResult:' *



回答2:


I had the same situation with you. Now, the app is ready for sale. I hope I will help you to solve that problem.

"Your app uses or references the following non-public APIs: cancelAction:, defaultInstance "

My solved Steps:

(1) grep -R 'defaultInstance' *

the CrashReporterSDK matches so i remove it .

(2) grep -R 'cancelAction:' * it matches some project function names. I also resolve them.

(3) I suggest that before using "grep -R", you should remove the project's "build document files", so "grep -R" will give us more useful information.

finished




回答3:


Run otool on the excutable.

Go to the build directory:

AppName/build/AppName.build/Release-iphoneos/AppName.build/Objects-normal/armv6/

and run

strings AppName | grep ‘setResult' to know which framework used that particular method.




回答4:


If you don't find the reference by searching your project, the issue is most likeley in a compiled third party library. You can use "nm " to list symbols in compiled libraries.

One of my apps was rejected by the exact same cause. I updated my project with the latest Facebook SDK (at this time 4.15.1), and the app passed the review.




回答5:


If you need check in your application only go to your project directory path in terminal and try below command.

    grep -R 'setResult:' .


来源:https://stackoverflow.com/questions/39405016/ios-app-rejected-non-public-apis

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!