显然Apple已经开始拒绝使用[UIDevice uniqueIdentifier]的应用程序。我听说有关应用程序在过去一周被拒绝和批准使用它的报告(有些通过,有些则没有)。但是,没有一个主要的广告网络(为我的应用程序带来收入)还没有出现不使用UDID的API。我的应用程序中包含的所有API都使用它。他们都说他们正在开发新的API,很快就会推出,但可能需要几个月的时间。
对我而言,Apple似乎很难通过App审核流程强制执行此政策,而不是通过不允许它的新版操作系统(并且人们有时间在测试期间进行编程)。
所有这一切,我的问题是,如果您在应用审核期间访问UDID,Apple究竟会检测到什么?他们是否以某种方式扫描捆绑包以查看呼叫是否在那里,或者他们是否监控在测试应用程序时实际进行的系统调用?我想如果用户想要付费,或者让他们选择支持广告并因此提供他们的UDID,则可能无法访问广告API。但是,我需要了解Apple是否拒绝基于[UIDevice uniqueIdentifier]简单地编译到您的代码中,或者他们是否根据您在应用程序审核测试期间调用[UIDevice uniqueIdentifier]进行检测。
请不要回答这个问题,原因是您不应该使用[UIDevice uniqueIdentifier]或如何创建自己的UDID等等。我的问题是我需要的第三方库还没有其他选择解。问题是:Apple如何在应用审核期间检测到UDID访问?
答案 0 :(得分:7)
众所周知,他们使用静态分析,它基本上扫描您编译的二进制文件,以获取对特定方法的调用的编译版本。他们还使用它来检测对私有API的调用。可以通过以创造性方式从字符串构造选择器来欺骗静态分析。虽然这不是诚实的或推荐的。
但更强大的方法最有可能通过HTTP代理,通过使用您的应用程序,他们可以监视任何发送出去的UDID的HTTP流量。这可能是通过散列或2way加密得到的。这也不诚实或推荐。
今年夏天推出iOS6时,该方法可能会被完全删除,因此对其使用的所有混淆都完全没有用。
答案 1 :(得分:2)
此外,他们之前也曾报道过在特殊硬件和/或未发布的操作系统版本上运行正在审核的应用程序,这些版本可能包括也可能不包括某种类型的工具,例如网络流量。