gpt4 book ai didi

ios - UIDevice uniqueIdentifier 已弃用 - 现在该怎么办?

转载 作者:IT王子 更新时间:2023-10-29 07:24:24 26 4
gpt4 key购买 nike

刚刚发现 the UIDevice uniqueIdentifier property is deprecatediOS 5 中,在 iOS 7 及更高版本中不可用。似乎没有可用或即将出现的替代方法或属性。

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

来自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] 的直接替代品(但 Apple 似乎是在应用程序首次启动时创建的 UUID想要你使用)。

编辑 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/6993325/

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