刚刚看到UIDevice uniqueIdentifier属性在iOS 5中已弃用,在iOS 7及更高版本中不可用.似乎没有替代方法或财产可用或即将出现.
我们的许多现有应用程序都严格依赖此属性来唯一标识特定设备.我们如何处理这个问题呢?
2011 - 2012年文件中的建议是:
特别注意事项
不要使用uniqueIdentifier属性.要创建特定于应用程序的唯一标识符,可以调用该
CFUUIDCreate函数创建一个UUID,并使用NSUserDefaults该类将其写入默认数据库.
但是,如果用户卸载并重新安装应用程序,则此值将不同.
我正在寻找一种使用唯一标识符安全地识别移动设备的方法.每次我在特定设备上安装我的应用程序时,我都应该获得相同的唯一标识符.此标识符将上载到服务器后端并保存以供将来参考.
必须在不依赖手机的IMEI号码的情况下实现这一点.苹果早已禁止它用于iOS,谷歌可能会在明天为Android做同样的事情.
对于Android,至少有ANDROID_ID.iOS怎么样?什么都没有?
Android和iOS都必须采用标准的,万无一失的方式.我对任何/所有/付费/免费/本地/第三方解决方案感兴趣.其他公司为解决这个问题做了什么?
我已阅读以下帖子:
1. 识别应用程序安装.
4. iOS上的持久交叉安装设备标识符:使用Keychain.
5. UIDevice uniqueIdentifier已弃用 - 现在该怎么办?
7. iOS7 - 设备唯一标识符.
8.将 唯一ID实现为UUID并将其保存在Keychain中.
我想超越这个.还有什么可以做的?那里有一个全面的,一劳永逸的防弹解决方案吗?
我正在尝试使用identifierForVendorAPI.
根据文件
在iOS设备上安装app(或来自同一供应商的其他应用程序)时,此属性中的值保持不变.当用户从设备中删除所有该供应商的应用程序并随后重新安装其中一个或多个应用程序时,该值会更改.因此,如果您的应用程序将此属性的值存储在任何位置,则应优雅地处理标识符更改的情况.
在使用Ad Hoc的调试或发布中,我无法复制此行为.即使我删除了我为同一供应商安装的所有应用程序(我正在使用的反向域名,例如com.test),标识符仍然保持不变.
这是否仅适用于App Store分发?我错过了什么吗?
我在iOS 8.3上运行.
相关问题:iOS7 - 设备唯一标识符.