2014-08-28 44 views
0

我是iOS新手。我需要从设备创建唯一的ID来注册我的一些Web服务以获取唯一标识。网上有很多文件,我注意到检索UUID在iOS6 +中已弃用。iPhone的唯一ID最好保存在持久存储中?

我的目标是iOS 5 +的应用程序。

我已通过下面的链接去:

http://www.doubleencore.com/2013/04/unique-identifiers/ 

三个ID被人津津乐道。 CFUUID,NSUUID,IDFV。

鉴于我需要从ios 5.0中定位哪一个我可以用作唯一标识符的场景?

请提出建议。

+0

而不是试图找出你应该尝试找出一个唯一的用户,因此用户不会被锁定到一个设备的唯一设备。为此,您应该使用用户ID /密码组合和您的安全Web服务器。这将适用于所有iOS版本。 – 2014-08-28 11:59:10

+0

那是真的。但试着如果我可以用ID来管理。如果我一旦生成CFUUID并保持用户默认状态,该怎么办?只有当它重新安装时,我想念它,否则我可以拥有它? – Whoami 2014-08-28 12:00:49

+0

本文可能会对您有所帮助:http://nshipster.com/uuid-udid-unique-identifier/ – Zaphod 2014-08-28 12:48:03

回答

0

使用该供应商ID(标识符供应商(IDFV)):

NSString *aStrVendorId= [NSString stringWithFormat:@"%@", [[[UIDevice currentDevice]identifierForVendor] UUIDString]]; 
+0

但IDFV不适用于ios5 – Whoami 2014-08-28 11:59:02

+0

试试这个:https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5 – 2014-08-28 12:19:06

+0

**注意:这不会在iOS 7 **下工作 – Templar 2014-08-28 12:39:20

0

你为什么不只是创建在安装和存储在钥匙串/ userdefaults一个新的UUID?

这个UUID是否真的有必要与设备的UUID相同?

更多详细信息在this question

编辑:这是重要的部分从那里:

+ (NSString *)GetUUID 
{ 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    CFStringRef string = CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    return (__bridge NSString *)string; 
} 
+0

[[UIDevice currentDevice] uniqueIdentifier](UUID)现在已被弃用,应用程序将被拒绝从App Store使用它。 – 2014-08-28 12:18:45

+0

@Yasika你知道我上面写的是什么吗? 'CFUUID'可用并且不被弃用。如果你不能得到一个,就自己生成。就这么简单。 – Templar 2014-08-28 12:22:45

0

我调查研究了很多关于这个问题的。我想出了最好的解决办法是使用IDFV +钥匙扣

+(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; 
}