与 iCloud 帐户关联的唯一标识符
Unique identifier associated to the iCloud account
我想使用一个代码来识别用户,而不要求他们提供他们的电子邮件地址或其他敏感信息,当她更换设备时,这些信息也可能会跟随她。很久以前,我可靠地实现了以下代码:
NSString *strApplicationUUID=nil;
+(NSString*) sharedUdid{
if (!strApplicationUUID){
NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
strApplicationUUID = [SSKeychain passwordForService:appName account:@"incoding"];
if (strApplicationUUID == nil) {
strApplicationUUID=[[NSUserDefaults standardUserDefaults] objectForKey:@"udid"];
if (!strApplicationUUID) strApplicationUUID=[[[UIDevice currentDevice] identifierForVendor] UUIDString];
else strApplicationUUID = [[NSUUID UUID] UUIDString];
[SSKeychain setPassword:strApplicationUUID forService:appName account:@"incoding"];
}
}
return strApplicationUUID;
}
不幸的是,我发现为每个用户生成了除唯一标识符之外的所有标识符。所以我暂时改用令牌,尽管它很长而且它链接到单个设备。有没有更好的解决方案?
我改用 CloudKit 标识符。
我想使用一个代码来识别用户,而不要求他们提供他们的电子邮件地址或其他敏感信息,当她更换设备时,这些信息也可能会跟随她。很久以前,我可靠地实现了以下代码:
NSString *strApplicationUUID=nil;
+(NSString*) sharedUdid{
if (!strApplicationUUID){
NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
strApplicationUUID = [SSKeychain passwordForService:appName account:@"incoding"];
if (strApplicationUUID == nil) {
strApplicationUUID=[[NSUserDefaults standardUserDefaults] objectForKey:@"udid"];
if (!strApplicationUUID) strApplicationUUID=[[[UIDevice currentDevice] identifierForVendor] UUIDString];
else strApplicationUUID = [[NSUUID UUID] UUIDString];
[SSKeychain setPassword:strApplicationUUID forService:appName account:@"incoding"];
}
}
return strApplicationUUID;
}
不幸的是,我发现为每个用户生成了除唯一标识符之外的所有标识符。所以我暂时改用令牌,尽管它很长而且它链接到单个设备。有没有更好的解决方案?
我改用 CloudKit 标识符。