首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为IOS中的所有设备创建唯一的UUID?

为IOS中的所有设备创建唯一的UUID?
EN

Stack Overflow用户
提问于 2014-09-01 17:30:17
回答 2查看 1.1K关注 0票数 1

如何创建相同(唯一) UUID,以及如何对所有IOS Devices.In使用UUID,我的代码UUID在不同的设备中是不同的。

我的UUID代码是。

代码语言:javascript
复制
 NSString* uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+
 NSLog(@"UUId:: %@", uniqueIdentifier);

谢了沙比尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-01 18:07:41

此方法将为每个设备创建唯一的字符串。这里,SGKeyChain是一个密钥链包装器。你可以自己写这个。

代码语言:javascript
复制
+ (NSString *) uniqueDeviceIdentifier
{

NSString *deviceUUID = [[SGKeyChain defaultKeyChain] stringForKey:@"uniqueId"];

    if (!deviceUUID) {

        if (!deviceUUID.length) {

    NSString *deviceUUID = @"";

    CFUUIDRef uuidRef = CFUUIDCreate(NULL);

    CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);

    CFRelease(uuidRef);

     deviceUUID = [NSString stringWithFormat:@"%@",[NSString stringWithString:(__bridge_transfer NSString *)uuidStringRef]];

[[SGKeyChain defaultKeyChain] setObject:deviceUUID forKey:@"uniqueId" accessibleAttribute:kSecAttrAccessibleAlways];

    }
}       
    return deviceUUID;
}
票数 4
EN

Stack Overflow用户

发布于 2014-09-01 17:43:42

至于获得唯一的ID,我非常喜欢下面的代码:

代码语言:javascript
复制
[[NSProcessInfo processInfo] globallyUniqueString]

它每次都使用日期和deviceId来创建一个很棒的uniqueID。至于在设备上共享它,这是不可能的。每个设备都是唯一的,所以您不能期望您的代码知道谁的设备属于谁。如果您确实希望它这样做,那么您可以从以下三种方法中选择一种:

  1. 您可以在一个本地登录屏幕上使用名称(可能是加扰的)作为uniqueID。这将使用硬编码的扰码器,这样每个名称的uniqueID都是相同的,但是每个用户的名称不同。
  2. 您可以使用像Parse这样的后端服务器来为每个人保存一个uniqueId。然后,您可以在设备上登录,UUID将在设备之间共享。
  3. 最后,如果你只是想要一个随机的字符串(比如463GH529-GJRH-FRH4-FH53-58FH3),你可以硬编码一个可以在每个设备上使用的字符串,但是这违背了UUID的目的,因为每个人都会有相同的字符串--不是很独特!

希望这几点中有一点对你有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25610621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档