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:' .
同一个应用程序之前已经被批准了两次,但是在设置图像视图和再次提交应用程序等一些更改之后,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' *
(2) grep -R 'cancelAction:' * 它匹配一些项目函数名称。我也解决了。
(3)我建议在使用“grep -R”之前,先把项目的“build document files”去掉,这样“grep -R”会给我们更多有用的信息。
完成
如果您需要签入您的应用程序,只需转到终端中的项目目录路径并尝试以下命令。
grep -R 'setResult:' .