我是iOS新手。我需要从设备创建唯一的ID来注册我的一些Web服务以进行唯一标识。网上有很多文件,我注意到在iOS6 +中不推荐检索UUID。
我从iOS 5 +开始定位我的应用程序。
我已经通过以下链接:
http://www.doubleencore.com/2013/04/unique-identifiers/
讨论了三个ID。 CFUUID,NSUUID,IDFV。
鉴于我需要从ios 5.0定位的场景,我可以将其用作唯一标识符吗?
请建议。
答案 0 :(得分:0)
使用此供应商ID(供应商标识符(IDFV)):
NSString *aStrVendorId= [NSString stringWithFormat:@"%@", [[[UIDevice currentDevice]identifierForVendor] UUIDString]];
答案 1 :(得分:0)
为什么不在安装时创建新的UUID并将其存储在keychain / userdefaults中?
这个UUID是否真的必须与设备的UUID相同?
this question中的更多详情。
修改:这是其中的重要部分:
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
答案 2 :(得分:0)
我对这个问题进行了很多调查。我想出的最佳解决方案是使用IDFV + keychain
+(NSString*)deviceID{
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"DeviceUDIDkeychain" accessGroup:nil];
NSString *devID = [keychain objectForKey:(__bridge id)(kSecAttrAccount)];
if (!devID || devID.length == 0) {
devID = [[[UIDevice currentDevice]identifierForVendor]UUIDString];
[keychain setObject:devID forKey:(__bridge id)(kSecAttrAccount)];
}
return devID;
}