有没有人有他们的iOS应用程序被拒绝的苹果使用设备的UDID?

我听说过一些传言,苹果拒绝使用iOS5弃用方法[UIDevice uniqueIdentifier]应用程序。 任何人都可以确认他们的应用程序因为这个原因被拒绝了吗? 我知道使用这种弃用方法的替代scheme,但我们的一位客户要求我们使用我们知道使用此方法的第三方库。

如果是这种情况,我会感到惊讶,因为API方法已被弃用,而不是私有的。

苹果并没有因此拒绝应用程序。 我在支持推送通知的应用程序中收集了设备UDID以及令牌,并且他们都已被批准。 UDID只是被弃用 ,这意味着苹果最终不会允许你访问它们。 一切仍然有效,将被批准。

我听说苹果不赞成使用UDID来阻止开发人员和第三方分析人员识别特定的人员。 如果真的是因为与iCloud有关的问题,苹果公司显然已经解决了这个问题,而不是给其他人造成不便。

编辑:它看起来像苹果拒绝一些应用程序访问设备的UDID。 为了安全起见,我将使用CFUUID来创build一个随机的唯一标识符。 您可以使用NSUserDefaults或钥匙串来保存它。 钥匙串的好处是,如果用户删除你的应用程序,钥匙链项目不会被删除,所以如果用户重新安装你的应用程序,你仍然可以访问UDID。 只有在用户恢复设备时才会被删除。

在您的应用程序中使用标识符

从5月1日开始,App Store将不再接受访问UDID的新应用或应用更新。 请更新您的应用程序和服务器,将用户与iOS 6中引入的供应商或广告标识符相关联。您可以在UIDevice类别参考中find更多详细信息。

来源: https : //developer.apple.com/news/

看起来应用程序审查是在传输 UDID的应用程序上执行此规则,而不会获得用户的权限 – 正如本文所build议的那样 – 而不是简单地调用已弃用的API。

我们有一个应用程序的审查更新,将发送设备的UDID到我们的服务器,我们将使用它来索引用户的帐户。 我们决定不采取任何措施,改变我们的代码来生成一个特定于应用程序的唯一标识符,正如废弃UDID

现在应用程序不允许访问UDID,也不能使用UIDevice的uniqueIdentifier方法。 请更新您的应用程序和服务器,将用户与iOS 6中引入的供应商或广告标识符相关联

 NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor]; NSString *uuidString = [uuid UUIDString]; 

并且必须添加ADSupport框架

自5月1日以来,苹果拒绝所有访问UDID的应用程序。 但似乎他们唯一能做的就是检查string“uniqueIdentifier”是否在二进制文件中。

所以,即使你不再访问手机的uniqueIdentifier,但你给一个variables相同的名字,他们会发现它在二进制文件,他们会拒绝它,因为他们不能做的差异。

如果您想知道二进制文件是否包含该文件,可以将.ipa文件的扩展名(导出用于即席部署)更改为.zip,解压缩,然后执行fgrep -R uniqueIdentifier . 在有效载荷/文件夹的terminal中。 您也可以在您的项目文件夹中执行此命令来查找包含该string的文件。

这对我有效。