Apple拒绝我的App,因为使用私有Api - allowAnyHTTPSCertificateForHost,为什么?

时间:2013-09-12 06:28:50

标签: iphone ios

我们发现您的应用使用了一个或多个非公开API,这些API不符合App Store审核指南。不允许使用非公共API,因为如果这些API发生变化,可能会导致糟糕的用户体验。

我们在您的应用中发现了以下非公开API:

allowsAnyHTTPSCertificateForHost:

如果您的源代码中定义的方法与上述API的名称相同,我们建议您更改方法名称,以便它们不再与Apple的私有API发生冲突,以避免在将来的提交中标记您的应用程序。 / p>

此外,上述API中的一个或多个可能位于应用程序附带的静态库中。如果您无权访问库的源,则可以使用“strings”或“otool”命令行工具搜索已编译的二进制文件。 “strings”工具可以输出库调用的方法列表,“otool -ov”将输出Objective-C类结构及其定义的方法。这些技术可以帮助您缩小有问题的代码所在的位置。

我们感谢您在代码中采取了使用非公共API的预防措施,但是,无法准确或完全预测API的修改方式以及这些修改可能产生的影响。因此,我们不允许在App Store应用程序中使用非公共API。

如果没有替代方案来提供您的应用所需的功能,我们建议您提交增强请求。或者,尝试与Apple开发人员技术支持团队合作,探索替代解决方案。

有时,App Store上的应用可能看起来不符合App Store审核指南。我们努力确保App Store上的应用程序符合规定,并且我们会尝试识别App Store上当前可能不存在的任何应用程序。识别这些事件需要时间,但另一个不合规的应用程序不是您的应用程序的原因。

对于离散的代码级问题,您可以咨询Apple Developer技术支持。请务必:

  • 包含拒绝问题的完整详情
  • 准备任何符号化的崩溃日志,屏幕截图和步骤,以重现DTS工程师跟进时的问题。

有关如何表示和阅读崩溃日志的信息,请参阅技术说明TN2151了解和分析iPhone OS应用程序崩溃报告。

如果您在复制此问题时遇到困难,请尝试按照https://developer.apple.com/library/ios/qa/qa1764/技术问答QA1764:如何重现只有App Review或用户看到的崩溃或错误中所述测试工作流程。

2 个答案:

答案 0 :(得分:1)

您应该对Apple在您的应用中发现安全风险感到高兴。您正在做的是在SSL / TLS连接中完全禁用客户端服务器验证。这真的不是你想要做的 - 除非进行单元测试。

你应该修复安全风险,也不要在他的评论中遵循Prem Kumar的链接 - 因为建议的代码实际上是相同的(禁用服务器信任验证),而不使用私有API。

答案 1 :(得分:0)

您可能使用QQ-SDK1.8,它使用私有API:allowsAnyHTTPSCertificateForHost。并且1.8.1版本已修复它。