iOS跨安装唯一标识符

12

我们需要唯一地标识设备,并且它必须在安装(重新安装)期间保持不变。到目前为止,我们一直使用存储在键链中的标识符,因此它在安装之间保持不变。现在,在10.3测试版中,当应用程序被卸载时,键链会自动删除。

Ref: https://forums.developer.apple.com/thread/72271

我们能否使用广告标识符 (AdIdentifier) 作为唯一标识符。我们正在提供广告服务,目前正在使用它来实现相同的功能。


2
很遗憾,现在没有更好的方法。identifierForVendor 的工作方式与共享钥匙串相同。当应用程序(来自同一供应商的所有应用程序)被卸载时,它也会发生变化。开始识别用户而不是设备。例如,让他们使用 Facebook 登录。 - Sulthan
2个回答

2
似乎有一种解决方法。实际上,你提供的论坛中已经提到了这个方法。
通过将钥匙串条目设置为其他应用程序可用,您可以确保在删除您的应用程序时不会删除它。
要做到这一点,您可以在iOS 10上将该项目添加到 kSecAttrAccessGroupToken 访问组中。请参见https://gist.github.com/Raztor0/34ad0e23a410c33526c9fa1b6e8d281c 如果您将访问组设置为此公认的组,则所有已安装的应用程序都可以读取您的钥匙串项目:
每个应用程序都可以访问此访问组,因此无需在keychain-access-groups授权中显式列出它,但是应用程序必须在密钥链查询中明确声明此访问组,以便能够从外部令牌访问项目。
这使得该项目不适合任何敏感或机密数据(例如密码、用户名等)。对于设备的唯一标识,这并不重要。

我明白了,我搞混了。这是不是意味着该项对所有应用程序都可见?那么对于像密码这样的敏感信息就不合适了? - Martin R
@MartinR 没错,但如果我们只是谈论唯一识别设备的话,我认为它是合适的。 - Sulthan
好的,谢谢澄清。尽管在关键链中存储密码经常被推荐,但添加有关敏感信息的通知仍然可能非常有用。我将把这个决定留给你。 - Martin R
@Snowy 看起来苹果没有在10.3公开版本中应用这个功能。https://forums.developer.apple.com/message/210531#217194 - Toru
@Sulthan 这个在 iOS 10 以下的设备上能用吗? - Madhav Shenoy
显示剩余3条评论

1

您是指AdIdentifier作为广告标识符,也就是IDFA吗? https://developer.apple.com/reference/adsupport/asidentifiermanager/1614151-advertisingidentifier

这个值可以被设备持有人从设置应用程序中轻松替换。而且当用户限制广告跟踪时,这个值全部为零。

想到了在Web浏览器中使用Cookie的方法(例如,在第一次启动应用程序时检查Cookie并存储唯一字符串,如果不存在),但这也可以被用户修改。

毕竟,我不知道如何完全识别唯一用户。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接