CFUUIDCreate生成的UUID会不断变化

5

我是一名初级的iPhone应用程序开发者,我正在尝试通过一个IBAction按钮在标签上显示iPhone或App的唯一标识符。我进行了一些研究,并知道一些代码已经过时,现在使用CFUUID代替。下面是我使用的代码。但是,每次我点击IBAction按钮时,UUID都会更改。我做错了什么?

CFUUIDRef udid = CFUUIDCreate(NULL);

NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);

uuid.text= udidString;  
3个回答

8

我认为你误解了CFUUIDCreate()的目的,请阅读其文档,你会理解的。

我猜测该API已经很好地实现了其目的,即创建通用唯一标识符,每次调用它都会随机返回一个唯一的标识符。


那么是否有其他方法可以获得应用程序的常量标识符? - wakaka

5

您可以使用

[[UIDevice currentDevice] uniqueIdentifier]

然而,这种方法已经过时。为了获得每个设备的唯一标识符,您仍可以使用CFUUIDCreateString并将输出保存到用户默认设置中。每次应用程序运行时加载此值。如果删除应用程序,然后重新安装,此值将不同。

如果您确实需要跨应用程序安装使用唯一标识符,则可以使用网络MAC地址。


7
将它存储在钥匙串中,即使应用被删除/重新安装,它也会存活 :). - DougW

4
如上所述,CFUUIDCreate的目的是每次运行都创建一个不同的UUID。你可以创建一个,并将其存储在你的应用程序中,或者你可以尝试像https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5这样的东西——基本上,它在UIDevice上提供了一个uniqueGlobalDeviceIdentifier函数,使用MAC地址的MD5哈希作为其基础。
[[UIDevice currentDevice] uniqueGlobalDeviceIdentifier]

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