在iOS 7中创建UUID和UDID

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

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

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

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

 [[UIDevice currentDevice]identifierForVendor] 

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

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

我按照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; }