跨安装的ios唯一标识符

我们需要唯一标识设备,并且在安装(重新安装)时必须相同。 我们一直在使用存储在钥匙串中的标识符,所以它在整个安装过程中一直存在。 现在10.3 beta版本的应用程序被卸载时,key chain被自动删除。 参考: https : //forums.developer.apple.com/thread/72271

我们可以使用AdIdentifier作为唯一标识符吗? 我们已经投放了广告,目前我们正在使用相同的广告。

您的意思是AdIdentifier作为广告标识符,又名IDFA? https://developer.apple.com/reference/adsupport/asidentifiermanager/1614151-advertisingidentifier

这个值可以很容易地从设置应用程序的设备持有者取代。 而且当用户限制广告跟踪时,这个值也是全零。

想出了在Web浏览器中使用Cookie的想法(例如,在首次启动应用程序时检查cookie,如果不存在则存储唯一string),但也可以由用户修改。

毕竟,我不知道如何完全识别独特的用户。

似乎有一个解决方法。 这实际上是在你所关联的论坛中提到的。

通过使钥匙串项目可用于其他应用程序,您可以确保当您的应用程序被删除时它不会被删除。

为此,您可以将该项添加到iOS 10上的kSecAttrAccessGroupToken访问组。请参阅https://gist.github.com/Raztor0/34ad0e23a410c33526c9fa1b6e8d281c

如果您将访问组设置为这个众所周知的组,您的钥匙串项目将可以被所有安装的应用程序读取:

每个应用程序都有权访问此访问组,因此不需要在Keychain-Access-Group权利中明确列出它,但是应用程序必须在Keychain查询中明确指定此访问组,以便能够访问来自外部令牌的项目。

这使得该项目不适合任何敏感或秘密的数据(例如密码,用户名等)。 对于设备的唯一标识,这应该不重要。