跨安装的 ios 唯一标识符

标签 ios swift keychain

我们需要唯一标识设备,并且在安装(重新安装)过程中必须相同。到目前为止,我们一直在使用存储在钥匙串(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/

相关文章:

ios - UICollectionView - 单元格之间的距离?

ios - 使用静态库将 AFNetworking 添加到项目我们 AFNetworking

ios - 阻止 LaunchScreen 在 App 从 URL Scheme 加载时显示 - iOS

arrays - 在 Swift 中将时间数组从 24 小时转换为 12 小时

SecItemCopyMatching 的 swift 2.0 钥匙串(keychain)类型错误

iphone - 如何在 iPhone/iPad 上存储非常大的图像

ios - CGImageCreate 测试模式不工作 (iOS)

swift - IBAction 显示纬度和经度(swift)

linux - ssh-add 的钥匙串(keychain)

macos - 如何在不使用 openssl 的情况下使用 OSX 10.7+ 进行非对称加密/解密?