iOS应用程序被拒绝:非公共API

问题描述 投票:9回答:5

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

表现 - 2.5.1

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

setResult:nextStarIndex

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

如果用户包含私有API,他们如何测试他/她的应用程序?

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

ios app-store appstore-approval
5个回答
10
投票

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

grep -R 'setResult:' *

4
投票

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

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

我解决了步骤:

(1)grep -R'defaultInstance'*

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

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

(3)我建议在使用“grep -R”之前,你应该删除项目的“构建文档文件”,因此“grep -R”将为我们提供更多有用的信息。


1
投票

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

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


1
投票

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

    grep -R 'setResult:' .

0
投票

在可执行文件上运行otool。

转到构建目录:

AppName的/编译/ AppName.build /释放-的iPhoneOS / AppName.build /目标正常/ ARMv6的/

并运行

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

© www.soinside.com 2019 - 2024. All rights reserved.