在App审核期间,Apple如何检测UDID访问?

时间:2012-03-29 21:54:52

标签: ios iphone appstore-approval

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

对我而言,Apple似乎很难通过App审核流程强制执行此政策,而不是通过不允许它的新版操作系统(并且人们有时间在测试期间进行编程)。

所有这一切,我的问题是,如果您在应用审核期间访问UDID,Apple究竟会检测到什么?他们是否以某种方式扫描捆绑包以查看呼叫是否在那里,或者他们是否监控在测试应用程序时实际进行的系统调用?我想如果用户想要付费,或者让他们选择支持广告并因此提供他们的UDID,则可能无法访问广告API。但是,我需要了解Apple是否拒绝基于[UIDevice uniqueIdentifier]简单地编译到您的代码中,或者他们是否根据您在应用程序审核测试期间调用[UIDevice uniqueIdentifier]进行检测。

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

2 个答案:

答案 0 :(得分:7)

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

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

今年夏天推出iOS6时,该方法可能会被完全删除,因此对其使用的所有混淆都完全没有用。

答案 1 :(得分:2)

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

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