gpt4 book ai didi

ios - 不推荐使用 UIDevice uniqueIdentifier - 现在该怎么办?

转载 作者:行者123 更新时间:2023-12-01 17:00:49 27 4
gpt4 key购买 nike

刚刚曝光the UIDevice uniqueIdentifier property is deprecated iOS 5 在 iOS 7 及更高版本中不可用。似乎没有替代方法或属性(property)可用或即将推出。

我们现有的许多应用程序都紧密依赖此属性来唯一标识特定设备。今后我们将如何处理这个问题?

来自the documentation in 2011-2012的建议曾是:

Special Considerations

Do not use the uniqueIdentifier property. To create a unique identifier specific to your app, you can call the CFUUIDCreate function to create a UUID, and write it to the defaults database using the NSUserDefaults class.



但是,如果用户卸载并重新安装应用程序,此值将不同。

最佳答案

CFUUIDCreate 创建的 UUID如果用户卸载并重新安装该应用程序,它是独一无二的:您每次都会获得一个新的。

但是您可能希望它不是唯一的,即。 e.当用户卸载并重新安装应用程序时,它应该保持不变。这需要一些努力,因为最可靠的每设备标识符似乎是 MAC 地址。你可以 query the MAC并将其用作 UUID。

编辑:当然,需要始终查询同一接口(interface)的 MAC。我想最好的选择是 en0 . MAC 始终存在,即使接口(interface)没有 IP/已关闭。

编辑 2:正如其他人所指出的,自 iOS 6 以来的首选解决方案是 -[UIDevice identifierForVendor] .在大多数情况下,您应该可以将它用作旧的 -[UIDevice uniqueIdentifier] 的直接替代品。 (但在应用程序第一次启动时创建的 UUID 是 Apple 似乎希望您使用的)。

编辑 3:所以这一点不会在评论噪音中迷失:不要使用 MAC 作为 UUID,使用 MAC 创建哈希。即使在重新安装和应用程序之间(如果哈希以相同方式完成),该哈希每次都会创建相同的结果。无论如何,如今(2013 年)这不再是必需的,除非您需要 iOS < 6.0 上的“稳定”设备标识符。

编辑 4:在 iOS 7 中,Apple 现在在查询 MAC 时总是返回一个固定值,以专门阻止 MAC 作为 ID 方案的基础。所以你现在真的应该使用-[UIDevice identifierForVendor]或创建一个每次安装的 UUID。

关于ios - 不推荐使用 UIDevice uniqueIdentifier - 现在该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com