在iOS 7中创建UUID和UDID

时间:2013-10-09 06:41:08

标签: iphone ios ios7

我想创建UUID,下面有代码可以创建UUID,如何在iOS7中创建多个供应商相同ID的UDID?

+ (NSString*) stringWithNewUUID
{
    CFUUIDRef uuidObj = CFUUIDCreate(nil);
    NSString *newUUID = (NSString*)CFUUIDCreateString(nil, uuidObj);
    CFRelease(uuidObj);
    return newUUID;
}

5 个答案:

答案 0 :(得分:6)

CFUUIDCreate函数生成版本4 UUID,完全取自伪随机数生成器。此类UUID中没有嵌入时间戳或MAC地址。 (这指的是很少使用的版本1的味道。)这些几乎适用于所有应用程序。

答案 1 :(得分:5)

此方法在iOS 6及更高版本中返回随机UUID

[[UIDevice currentDevice]identifierForVendor]

答案 2 :(得分:4)

我创建了一个供应商ID,然后使用钥匙串保存它,我将在下次使用KeychainWrapper keychainStringFromMatchingIdentifier:...保留

答案 3 :(得分:2)

上面代码生成的UUID中没有可恢复的时间戳。它只是一个字符串,如下所示:E1D87006-7CD0-4E28-9768-624DA92F75D6

答案 4 :(得分:0)

我按照Sandeep Khade的回答,使用PDKeychainBindings制作了以下代码。它与使用NSUserDefaults相同,但它将标识符保存在钥匙串中,即使删除了应用程序也可以保存数据。

+ (NSString *)uniqueVendor {

    PDKeychainBindings *keychain = [PDKeychainBindings sharedKeychainBindings];
    NSString *uniqueIdentifier = [keychain objectForKey:kKeyVendor];

    if (!uniqueIdentifier || !uniqueIdentifier.length) {

        NSUUID *udid = [[UIDevice currentDevice] identifierForVendor];
        uniqueIdentifier = [udid UUIDString];
        [keychain setObject:uniqueIdentifier forKey:kKeyVendor];
    }

    return uniqueIdentifier;
}