我想创建UUID,我有下面的代码可以创建UUID,如何在iOS7中使用多个供应商相同的ID创建UDID?
+ (NSString*) stringWithNewUUID
{
CFUUIDRef uuidObj = CFUUIDCreate(nil);
NSString *newUUID = (NSString*)CFUUIDCreateString(nil, uuidObj);
CFRelease(uuidObj);
return newUUID;
}
我想创建UUID,我有下面的代码可以创建UUID,如何在iOS7中使用多个供应商相同的ID创建UDID?
+ (NSString*) stringWithNewUUID
{
CFUUIDRef uuidObj = CFUUIDCreate(nil);
NSString *newUUID = (NSString*)CFUUIDCreateString(nil, uuidObj);
CFRelease(uuidObj);
return newUUID;
}
这个方法可以返回iOS 6及以上版本的随机UUID。
[[UIDevice currentDevice]identifierForVendor]
identifierForVendor
方法在不同设备上返回不同的值。苹果文档:“对于来自同一供应商并在同一设备上运行的应用程序,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及对于不同设备上的应用程序,返回不同的值。” - Armin我已经创建了一个供应商 ID 并将其保存在钥匙串中,下一次可以使用 KeychainWrapper keychainStringFromMatchingIdentifier:...
保留它。
CFUUIDCreate
函数生成一个版本4的UUID,它完全采用伪随机数生成器生成。这种类型的UUID中没有嵌入时间戳或MAC地址(这是指鲜为人知的版本1),对于几乎所有应用程序来说都是安全的。上面代码生成的 UUID 没有可恢复的时间戳。它只是一个看起来像这样的字符串: E1D87006-7CD0-4E28-9768-624DA92F75D6
+ (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;
}