iphone:如何创建唯一ID来识别用户

iphone:如何创建唯一ID来识别用户,iphone,objective-c,xcode,Iphone,Objective C,Xcode,在我的应用程序中,我想为每个用户创建唯一的应用程序ID。我听说了用于为用户创建唯一ID的GUID。那么我如何生成此GUID?提前感谢 [[UIDevice currentDevice] uniqueIdentifier] 返回iPhone的唯一ID 如果需要创建多个UUID,请使用以下方法: + (NSString *)GetUUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateS

在我的应用程序中,我想为每个用户创建唯一的应用程序ID。我听说了用于为用户创建唯一ID的GUID。那么我如何生成此GUID?提前感谢

[[UIDevice currentDevice] uniqueIdentifier]
返回iPhone的唯一ID

如果需要创建多个UUID,请使用以下方法:

+ (NSString *)GetUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  return [(NSString *)string autorelease];
}
注意:如果用户卸载并重新安装应用程序,CFUUIDCreate创建的UUID是唯一的:每次您都会得到一个新的


iOS 5中也不推荐使用UUID

iOS 5中不推荐使用UUID,但您可以始终使用MAC地址


还有一种与莫利克建议的解决方案相同的解决方案

这是关于创建唯一的文件名。。。但这可以适用于任何需要独特的东西

NSString *filePath;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"SomeDirectoryName"];

//Create unique filename
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef newUniqueIdString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
path = [path stringByAppendingPathComponent:(NSString *)newUniqueIdString];
path = [path stringByAppendingPathExtension: @"MOV"];
CFRelease(newUniqueId);
CFRelease(newUniqueIdString);

这有点离题,因为您询问的是用户,但您可能还需要一个独特的设备(指纹)。查看三个
kSecAttrAccessible
常量:
ksecattraccessibleallways仅此设备
ksecattraccessibleaftfirst解锁此设备后仅
,以及
ksecattraccessibleallwhen未锁定此设备时仅


假设苹果生成一个耦合到设备的值,这些常量将有助于阻止复制/粘贴攻击,类似于
[[UIDevice currentDevice]uniqueIdentifier]
。然而,我从未在实践中验证过这种行为。

那么IOS5中的选项是什么?您可以使用X斜杠提到的设备MAC地址@X斜杠,当用户从Wi-Fi和蜂窝连接来回移动时,网络接口上的MAC地址是否为常数?对于任何给定的网络接口,MAC地址都是固定的。例如,WiFi网卡有一个独立于蜂窝网卡的MAC地址。