我知道关于这个问题有很多关于 SO 的问题,但我认为因为 Apple 提前并积极拒绝使用 UDID 的应用程序(http://pulse.me/s/7mzKE),我们的开发人员需要采取积极的态度,批量讨论这个问题。
所以问题是 - 除了访问它的 UDID 属性之外,什么是唯一设备标识的良好、稳定和正确的替代方案?
我知道关于这个问题有很多关于 SO 的问题,但我认为因为 Apple 提前并积极拒绝使用 UDID 的应用程序(http://pulse.me/s/7mzKE),我们的开发人员需要采取积极的态度,批量讨论这个问题。
所以问题是 - 除了访问它的 UDID 属性之外,什么是唯一设备标识的良好、稳定和正确的替代方案?
这取决于您的需求......如果您正在寻找一个简单的设备标识符供您的应用程序使用,那么不推荐使用的uniqueIdentifier
方法的文档几乎可以提供您的答案:
不要使用 uniqueIdentifier 属性。要创建特定于您的应用程序的唯一标识符,您可以调用该函数来创建 UUID,并使用该类
CFUUIDCreate
将其写入默认数据库。NSUserDefaults
CFUUIDCreate
将返回对您的应用程序唯一的唯一手机标识符。您需要将其存储起来,NSUserDefaults
因为如果您进行后续调用,它会发生变化。对于大多数用途来说,这已经足够了,而且 Apple 并没有就这一变化提供足够的警告(iOS 5 已经发布了六个多月,而开发者文档的发布时间也更长了)。
另一种情况是您需要跨应用程序(即移动广告网络)共享您的设备标识符。这是一个更复杂的问题,有许多替代选项(也不能保证它们将来会继续存在:Apple 弃用 UDID API 的主要原因可能是停止跨应用程序用户跟踪)。
SecureUDID,基于 OpenUDID 但更安全,只能由域(和盐)访问
更多信息。
在任何无线通信期间,协议规范已经公开了设备 2 或 3 MAC 地址之一。
虽然我认为这不是典型的“我如何克服这个特殊的技术挑战”,但我同意它非常重要,并且可以在 SO 中很好地讨论(不确定 - 维基?论坛?)。我很想知道是否有关于Flurry 如何击败这个的讨论。