我们需要唯一标识设备,并且在安装(重新安装)过程中必须相同。到目前为止,我们一直在使用存储在钥匙串(keychain)中的标识符,因此它会在安装过程中持续存在。现在,在 10.3 beta 中,当应用程序被卸载时, key 链会自动删除。 引用:https://forums.developer.apple.com/thread/72271
我们可以使用 AdIdentifier 作为唯一标识符吗?我们转换了广告,目前我们正在使用它。
最佳答案
似乎有一个解决方法。它实际上在您链接的论坛中提到。
通过使钥匙串(keychain)项对其他应用可用,您可以确保它不会在您的应用被删除时被删除。
为此,您可以将项目添加到 iOS 10 上的 kSecAttrAccessGroupToken
访问组。参见 https://gist.github.com/Raztor0/34ad0e23a410c33526c9fa1b6e8d281c
如果您将访问组设置为这个众所周知的组,您的钥匙串(keychain)项将可被所有已安装的应用读取:
Every application has access to this access group so it is not needed to explicitly list it in keychain-access-groups entitlement, but application must explicitly state this access group in keychain queries in order to be able to access items from external tokens.
这使得该项目不适合任何敏感或 secret 数据(例如密码、用户名等)。对于设备的唯一标识,这无关紧要。
关于跨安装的 ios 唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42672750/