iOS App被拒绝:非公开API

时间:2016-09-09 06:20:40

标签: ios app-store appstore-approval

之前已经批准过两次相同的应用,但经过一些更改(如设置图片视图并再次提交应用)后,Apple拒绝了我的应用以查看错误:

  

表现 - 2.5.1

     

您的应用使用或引用了以下非公开API:

     

setResult:nextStarIndex

     

App Store上不允许使用非公共API,因为   如果这些API发生变化,它可能会导致糟糕的用户体验。

如果用户包含私有API,

是如何测试他/她的应用程序的?

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

5 个答案:

答案 0 :(得分:10)

我最后一次遇到这个问题是因为我的代码中的方法与Cocoa API中的私有方法之间存在名称空间冲突。您还可以使用grep找出您使用这些选择器的确切位置:

grep -R 'setResult:' *

答案 1 :(得分:4)

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

"您的应用使用或引用了以下非公开API:cancelAction:,defaultInstance"

我解决了步骤:

(1)grep -R' defaultInstance' *

enter image description here CrashReporterSDK匹配,所以我将其删除。

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

(3)我建议在使用" grep -R"之前,你应该删除项目"构建文档文件",所以" grep -R& #34;将为我们提供更多有用的信息。

完成了

答案 2 :(得分:1)

如果您没有通过搜索项目找到该引用,则该问题最常见于已编译的第三方库中。您可以使用“nm”列出已编译库中的符号。

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

答案 3 :(得分:1)

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

    grep -R 'setResult:' .

答案 4 :(得分:0)

在excutable上运行otool。

转到构建目录:

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

并运行

字符串AppName | grep'setResult' 知道使用该特定方法的框架。