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

时间:2012-01-19 05:39:10

标签: iphone objective-c xcode

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

4 个答案:

答案 0 :(得分:2)

[[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。

答案 1 :(得分:1)

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

How can I programmatically get the MAC address of an iphone

答案 2 :(得分:0)

Maulik建议的另一个解决方案......

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

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);

答案 3 :(得分:0)

这有点偏离主题,因为您询问用户,但您可能还需要一些独特的设备(指纹)。请查看Keychain Services Reference和三个kSecAttrAccessible常量:kSecAttrAccessibleAlwaysThisDeviceOnlykSecAttrAccessibleAfterFirstUnlockThisDeviceOnlykSecAttrAccessibleWhenUnlockedThisDeviceOnly

假设Apple生成与设备耦合的值,常量应该有助于阻止复制/粘贴攻击,类似于[[UIDevice currentDevice] uniqueIdentifier]。但是,我从未在实践中验证过这种行为。