0

可能重复:
iOS 唯一用户标识符

对于我的应用程序,我需要电话 uuid。我知道我可以得到它

NSUUID  *uuid = [NSUUID UUID];

但是每次我重新启动应用程序时,我都会收到不同的值。所以我不能像旧的 uuid 一样使用它(它总是一样的)。

我该怎么做才能获得稳定且唯一的标识符?

4

3 回答 3

3

UUID 是 128 位值 UUID 在空间和时间上都是唯一的,方法是结合生成它的计算机的唯一值和表示自 1582 年 10 月 15 日 00:00 以来 100 纳秒间隔数的值: 00.

所以每一秒你都会得到一个新的 UUID。

您无法收到稳定且唯一的 id,而是可以将收到的 id 保存在钥匙串或 plist 中并使用它。

于 2012-12-22T15:07:33.290 回答
2

您正在考虑 UDID(而不是 UUID),它已被弃用且 App Store 不再允许。

这是一种模拟它的技术:https ://stackoverflow.com/a/8677177/832111

于 2012-12-22T15:07:59.577 回答
1

您可以使用 OpenUDID 库为每个设备生成唯一的 UDID。它可以在这里找到。从根本上说,它使用粘贴板。下面的一个例子

//First app, install->run->close->delete
UIPasteboard* board = [UIPasteboard pasteboardWithName:@"com.company.wtv" create:YES];
board.persistent=YES;// persistent to make what you write persist after your app closes, or gets deleted.
[board setValue:@"hello" forPasteboardType:@"com.company.wtv.sharedValue"];

//Second app, installed after first one is deleted and ran this one... While bundle identifier and bundle seed different (i tried it on adhoc, not really releasing the app, but i htink the same)
NSData* result=nil;
NSString*resultStr=nil;
result =[board valueForPasteboardType:@"com.company.wtv.sharedValue"];
resultStr=[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];// I got resultStr containing hello
于 2012-12-22T15:33:47.580 回答