我的要求是在设备重新启动,操作系统更新,应用程序重新安装和设备重置后持续存在的UDID(即用户选择设置>常规>重置)。
我并没有试图破坏设备上的任何安全性;这是一个财务应用程序。
据我了解,不推荐使用OpenUDID。鉴于用户可以选择退出并出于安全原因,我还没有想出SecureUDID是否有用。
广告客户ID和供应商ID不是持久性的。
在钥匙串或用户默认/首选项中保存ID似乎不符合我的要求:这些机制看起来不够持久(如上所述)。
有没有人有任何建议?或者苹果公司刚刚让他们的移动设备无法实现这一目标?
非常感谢任何帮助。
答案 0 :(得分:3)
根据文档,-[UIDevice uniqueIdentifier]
的官方替代件为identifierForVendor
:
对于在同一设备上运行的同一供应商的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及不同供应商的不同设备上的应用程序,将返回不同的值。
显然这对你来说不是问题,因为你只创建了一个应用程序。但是,此属性确实有一些限制:
当iOS设备上安装了应用程序(或来自同一供应商的其他应用程序)时,此属性中的值保持不变 。当用户从设备中删除所有该供应商的应用程序并随后重新安装其中一个或多个应用程序时,该值会更改。因此,如果您的应用程序将此属性的值存储在任何位置,则应优雅地处理标识符更改的情况。
换句话说,这个标识符几乎就像一个UDID,其中一个限制是当用户从他们的设备删除你所做的所有应用程序时,该标识符将被重置。但说实话,我看不出为什么这对普通应用来说不够好的原因。仅在删除并重新安装应用程序时才会重置identifierForVendor
的唯一情况。 在重新启动,软件更新等方面持续存在,因此它不应该是一个问题。
TL; DR 您所要求的内容目前在技术上是不可能的,如果不违反Apple的规则,但identifierForVendor
确实应该是一个足够好的替代品。我想不出一个合理的理由,为什么你需要一个在应用程序删除和设备重置之间持续存在的标识符。