在我的应用程序中,我想为每个用户创建唯一的App ID ..我听说过用于为用户创建唯一ID的GUID。如何生成此GUID?提前感谢。
答案 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地址
答案 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
常量:kSecAttrAccessibleAlwaysThisDeviceOnly
,kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
和kSecAttrAccessibleWhenUnlockedThisDeviceOnly
。
假设Apple生成与设备耦合的值,常量应该有助于阻止复制/粘贴攻击,类似于[[UIDevice currentDevice] uniqueIdentifier]
。但是,我从未在实践中验证过这种行为。