【问题标题】:How does Apple detect UDID access during App review?Apple 如何在 App 审核期间检测 UDID 访问?
【发布时间】:2012-04-13 14:48:57
【问题描述】:

显然,Apple 已经开始拒绝使用 [UIDevice uniqueIdentifier] 的应用程序。我听说过去一周使用它的应用程序被拒绝和批准的报告(有些通过,有些没有通过)。然而,主要的广告网络(为我的应用程序产生收入)都还没有推出不使用 UDID 的 API。我的应用程序中包含的所有 API 都使用它。他们都说他们正在开发一个新的 API,它很快就会发布,但可能需要几个月的时间。

让我觉得很奇怪的是,Apple 会通过 App 审核流程来执行此政策,而不是通过根本不允许执行此政策的新版本的操作系统(而且人们在 beta 期间有时间进行编程)。

说了这么多,我的问题是,Apple 如何准确检测您是否在应用审核期间访问 UDID?他们是否以某种方式扫描捆绑包以查看调用是否在其中,或者他们是否在测试应用程序时监控实际进行的系统调用?如果用户想要付费,我可能会考虑不访问广告 API,或者让他们选择支持广告并因此提供他们的 UDID。但是,我需要了解 Apple 是否基于 [UIDevice uniqueIdentifier] 被简单地编译到您的代码中而拒绝,或者他们是否基于您在应用审查测试期间调用 [UIDevice uniqueIdentifier] 进行检测。

请不要以您不应该使用 [UIDevice uniqueIdentifier] 或如何创建自己的 UDID 等的原因回答这个问题。我的问题是我需要的第三方库还没有替代方案解决方案。问题是:Apple 如何在应用审核期间检测 UDID 访问?

【问题讨论】:

  • “而不是通过一个根本不允许它的新版本的操作系统”,但随后 Apple 无法使用它。 ;)
  • 删除 API 而不强制开发人员首先更新应用程序会破坏当前在客户设备上运行的现有已批准和购买的应用程序,可能会使客户对操作系统更新非常不满。

标签: ios iphone appstore-approval


【解决方案1】:

众所周知,他们使用静态分析,它基本上会扫描您编译的二进制文件以查找对特定方法的调用的编译版本。他们还使用它来检测对私有 API 的调用。可以通过创造性的方式从字符串构造选择器来欺骗静态分析。虽然这绝不是诚实或推荐的。

但更强大的方法很可能是通过 HTTP 代理,通过使用您的应用程序,他们可以监视任何发送出去的 UDID 的 HTTP 流量。这可能通过散列或 2way 加密来解决。这也是不诚实或不推荐的。

当 iOS6 今年夏天问世时,该方法可能会被完全删除,使其用法的所有混淆完全没有意义。

【讨论】:

  • 第三方广告网络 API 是预编译的,因此无法在其源代码中“混淆”对 [UIDevice uniqueIdentifier] 的调用。我只是想给用户选项,而不是在启动时自动连接到 API。但很好的答案。谢谢。
【解决方案2】:

据报道,Apple 对应用程序中使用的所有方法签名使用静态扫描(有时会拒绝应用程序为开发人员自己的自定义类使用与 Apple 的非公共 API 之一相同的消息签名.)

此外,之前也有报道称它们在特殊硬件和/或未发布的操作系统版本上运行正在审查的应用程序,这些版本可能包括也可能不包括某种类型的检测,例如网络流量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多