如何通过程序获取iOS设备的UDID?

21

我希望能以编程方式获取iOS设备的UDID。我正在使用以下代码获取iOS设备的UDID。

NSUUID *uuid = [NSUUID UUID];
NSString *uuidString = uuid.UUIDString;

但是我获得的输出结果与我设备的实际UDID不同。


1
我认为你可以在这篇文章中找到你要寻找的内容:https://dev59.com/nGYr5IYBdhLWcg3wuMX9 - halileohalilei
2
你怎么想到那样做就能获取你的UDID呢?只是随意猜测,凭空捏造的吗? - Tommy
2
@Tommy 好吧,可能性非常小,它可能是正确的。哈哈! - Fogmeister
@Fogmeister,它甚至不是很小,实际上它等于零)这就是为什么它被称为UUID。不仅仅是一个随机数生成器 :) - FreeNickname
@FreeNickname 是的,但仍有机会。只要看看……如果您在接下来的100年中每秒生成10亿个UUID,则列表中存在重复项的概率为50%。哈哈! - Fogmeister
1
@Fogmeister,这个主题有一个精彩的问题 :) - FreeNickname
1个回答

58
NSString* identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+
NSLog(@"output is : %@", identifier);

Swift 2.X (此处X指2.0及以上的所有版本)

let identifier: String = UIDevice.currentDevice().identifierForVendor().UUIDString()
NSLog("output is : %@", identifier)

Swift3

let identifier = UIDevice.current.identifierForVendor?.uuidString

NSLog("output is : %@", identifier! as String)

附加 参考资料

在iOS 5中,苹果显然开始取消对UDID(设备唯一标识符)的访问。无论如何,现在您可以用UUID(通用唯一标识符)进行标识。这必须基于每个应用程序。也就是说,不再有办法对设备进行标识,但您可以标识设备上的应用程序。只要用户不完全删除应用程序,那么此标识符将在应用程序启动之间保持,并且至少让您使用特定设备上的特定应用程序识别同一用户。不幸的是,如果用户完全删除然后重新安装应用程序,则ID将更改,但这是未来所有人能做到的最好的。


从技术上讲,这就是苹果现在允许您采取的代替使用UDID的方式,但有一个警告,即您不得使用该标识符用于提供广告。但是+1,因为现在人们会使用它来替代任何以前使用UDID的内容。 - Tommy
1
我已经使用了这段代码。但它没有返回与我的iOS设备相同的UDID。有没有办法获取我的设备的实际UDID? - Nishi Bansal
这个标识符对于所有设备和应用程序来说都是唯一的吗? - Nishi Bansal
是的,我明白了。但如果我的不同应用程序使用相同的预配文件和证书,那么这个identifierForVendor是否唯一? - Nishi Bansal
噢,它是唯一的,可以识别你的设备,但如果你删除并重新安装应用程序,则ID将更改,但表示的仍然是同一台设备。 - Anbu.Karthik
显示剩余5条评论

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