与 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 标识符。