5

我知道当您将其提交到应用商店时,您的应用中不允许出现一些受限制的 api 或代码。

你怎么知道它们是什么?有没有办法在提交之前检查您的应用程序以确保您没有使用过此类 api?

在设计阶段避免这个问题可能比以后尝试修复它更好,所以我想知道 Xcode 中是否有任何工具或文档来确定这一点。

4

4 回答 4

10

Apple 打算让您这样做的方式是使用 XCode 的验证功能。当你提交一个应用程序时,你为实现而构建(或从 XCode 菜单存档)。然后,您打开 Organizer 以查看您刚刚创建的存档。此时,您可以按下 Organizer 中的Validate按钮。这将执行验证,而无需实际提交应用程序。它会告诉您是否使用私有 API。根据使用它们的方式,它可能会确定违规行为是什么:

组织者截图

代码肯定有办法欺骗这个验证步骤,并且在审阅者查看包之前使用私有 API “逃脱”。但是,据我所知,这些方法都是有意隐藏私有 API 使用的方法,听起来你正试图发现意外使用。

如果您未通过此验证测试,那么您可能想要使用alan duncan 的回答中提到的 AppScanner 之类的东西。但是,为了完整起见,我想确保人们知道这个验证步骤在 XCode 中是可用的,并且检查私有 API 的使用是它在你提交之前所做的事情之一(并且必须等待几天才能被告知你什么做错了)。此外,即使您不使用 Organizer 中的Validate按钮,而只使用Submit,该工具也会为您执行验证。唯一的区别是捆绑包是否真的被上传到了 iTunes Connect。

于 2012-05-19T00:39:00.923 回答
2

如果您按照上面的建议坚持使用记录在案的接口,那就没问题了。唯一的问题是第三方库的实现对您来说可能是不透明的。

有一个名为 AppScanner 的 Mac 应用程序可以从私有 API 使用中进行扫描。不过,我没有这方面的经验。

于 2012-03-14T03:28:43.970 回答
1

您将获得有关 Apple 审批流程的更多信息,来自

于 2012-03-14T03:26:30.167 回答
1
  1. 获取私有 API 列表。
  2. 使用 class-dump 处理 Mach-O 文件,并获取处理后的字符串。
  3. 使用正则表达式获取字符串中的接口、类或方法。
  4. 将 API 与私有 API 列表匹配。

然后得到它~

我开了一个项目来做这个,但是因为我公司的原因,取消了。对此非常抱歉。

于 2015-10-31T04:53:32.863 回答