你知道OpenUDID是如何生成唯一设备 ID 的吗?
有没有可能 2 台设备具有相同的OpenUDID值?
编辑1:
设备重置时 OpenUDID 会改变吗?
编辑2:
如果可能发生冲突,是否有任何替代 OpenUDID 可以更好地工作的方法。
如果只有一种方法可以查看源代码...
// Next we try to use an alternative method which uses the host name, process ID, and a time stamp
// We then hash it with md5 to get 32 bytes, and then add 4 extra random bytes
// Collision is possible of course, but unlikely and suitable for most industry needs (e.g.. aggregate tracking)
根据这个OpenUDID 的工作方式是这样的:
从技术上讲,OpenUDID 混合使用本地应用存储来进行缓存和保护,以及应用间存储(iOS 上的自定义粘贴板)。这意味着该系统是去中心化的,既不受 Apple 控制,也不受其他任何人控制。使用的 OpenUDID 越多,它就越健壮、流行和防篡改。
除此之外,OpenUDID 的外观和感觉与本机 UDID 相同,即 40 个字符长的十六进制字符串。例如:
369416e16c373b617b2e4d151e01244c748c7b3e
我希望这有帮助
那么这真的不适合使用 UDID 作为登录标识符的应用程序。如果您必须恢复您的设备,那么 UDID 将会不同,而 Apple 的 UDID 是实际手机的一部分,并且会持续恢复。
这实际上更像是供广告商使用的 cookie .. 它不必 100% 准确,只需大部分准确即可。
它本质上是一个 160 位的随机字符串。所以有 2^160 种组合。所以很难得到两个相同的
阅读此唯一标识符开发人员指南
当 iOS 5 发布并且 uniqueIdentifier 被弃用时,人们急于寻找不受 Apple 控制的 UDID 替代方案。OpenUDID 似乎是使用最广泛的开源 UDID 替代方案。OpenUDID 在您的项目中实现起来非常简单,并得到大量广告提供商的支持。
NSString *openUDID = [OpenUDID value];
OpenUDID 使用一种非常聪明的方法来跨应用程序持久化标识符。它使用特别命名的粘贴板来存储标识符。这样,也使用 OpenUDID 的其他应用程序知道去哪里查找,并且可以获取已经生成的标识符而不是生成新的标识符。