iOS 应用被拒绝:非 public API

iOS App Rejected : non-public APIs

同一个应用程序之前已经被批准了两次,但是在设置图像视图和再次提交应用程序等一些更改之后,Apple 拒绝了我的应用程序,原因如下:

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.

如果 his/her 应用程序包含私有 API,用户如何测试它?

我没有在项目中的任何地方使用 setResult:nextStarIndex 代码,我该怎么办?

运行 可执行文件上的 otool。

进入构建目录:

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

和运行

strings 应用名称 | grep 'setResult' 了解哪个框架使用了该特定方法。

我上次遇到这种情况是因为我的代码中的方法与 Cocoa API 中的私有方法之间存在命名空间冲突。您还可以使用 grep 来准确找出您使用这些选择器的位置:

grep -R 'setResult:' *

如果您没有通过搜索您的项目找到参考,问题很可能是在编译的第三方库中。您可以使用 "nm " 列出已编译库中的符号。

我的一个应用程序因完全相同的原因被拒绝。 我用最新的 Facebook SDK(此时是 4.15.1)更新了我的项目,应用程序通过了审核。

我和你的情况一样。现在,该应用程序已准备好出售。我希望我能帮助你解决这个问题。

“您的应用使用或引用了以下非public API:cancelAction:, defaultInstance“

我解决的步骤:

(1) grep -R 'defaultInstance' *

CrashReporterSDK 匹配,所以我将其删除。

(2) grep -R 'cancelAction:' * 它匹配一些项目函数名称。我也解决了。

(3)我建议在使用“grep -R”之前,先把项目的“build document files”去掉,这样“grep -R”会给我们更多有用的信息。

完成

如果您需要签入您的应用程序,只需转到终端中的项目目录路径并尝试以下命令。

    grep -R 'setResult:' .