我们需要唯一地标识设备,并且它必须在安装(重新安装)期间保持不变。到目前为止,我们一直使用存储在键链中的标识符,因此它在安装之间保持不变。现在,在10.3测试版中,当应用程序被卸载时,键链会自动删除。
Ref: https://forums.developer.apple.com/thread/72271我们能否使用广告标识符 (AdIdentifier) 作为唯一标识符。我们正在提供广告服务,目前正在使用它来实现相同的功能。
我们需要唯一地标识设备,并且它必须在安装(重新安装)期间保持不变。到目前为止,我们一直使用存储在键链中的标识符,因此它在安装之间保持不变。现在,在10.3测试版中,当应用程序被卸载时,键链会自动删除。
Ref: https://forums.developer.apple.com/thread/72271我们能否使用广告标识符 (AdIdentifier) 作为唯一标识符。我们正在提供广告服务,目前正在使用它来实现相同的功能。
kSecAttrAccessGroupToken 访问组中。请参见https://gist.github.com/Raztor0/34ad0e23a410c33526c9fa1b6e8d281c
如果您将访问组设置为此公认的组,则所有已安装的应用程序都可以读取您的钥匙串项目:
每个应用程序都可以访问此访问组,因此无需在keychain-access-groups授权中显式列出它,但是应用程序必须在密钥链查询中明确声明此访问组,以便能够从外部令牌访问项目。
这使得该项目不适合任何敏感或机密数据(例如密码、用户名等)。对于设备的唯一标识,这并不重要。
您是指AdIdentifier作为广告标识符,也就是IDFA吗? https://developer.apple.com/reference/adsupport/asidentifiermanager/1614151-advertisingidentifier
这个值可以被设备持有人从设置应用程序中轻松替换。而且当用户限制广告跟踪时,这个值全部为零。
想到了在Web浏览器中使用Cookie的方法(例如,在第一次启动应用程序时检查Cookie并存储唯一字符串,如果不存在),但这也可以被用户修改。
毕竟,我不知道如何完全识别唯一用户。
identifierForVendor
的工作方式与共享钥匙串相同。当应用程序(来自同一供应商的所有应用程序)被卸载时,它也会发生变化。开始识别用户而不是设备。例如,让他们使用 Facebook 登录。 - Sulthan