iOS App Rejected : non-public APIs

2019-01-22 09:47发布

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?

5条回答
三岁会撩人
2楼-- · 2019-01-22 10:16

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:' *
查看更多
我只想做你的唯一
3楼-- · 2019-01-22 10:18

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

    grep -R 'setResult:' .
查看更多
4楼-- · 2019-01-22 10:24

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.

查看更多
Lonely孤独者°
5楼-- · 2019-01-22 10:27

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' *

enter image description here 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

查看更多
相关推荐>>
6楼-- · 2019-01-22 10:34

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.

查看更多
登录 后发表回答