iOS如何卸载重装后设备码不变

设备码做为激活码的绑定特征,很多时候因为用户的操作不当或者作者的写法逻辑不对,导致激活码容易掉授权。
最好的方法还是用手机的UDID作为设备码,因为UDID刷机也不会改变,因免越狱的限制,必须安装描述文件才能获取到UDID,所以还是有部分用户嫌麻烦或者不会使用。

下面说下怎么使用CFUUID作为设备码。
因为CFUUID是自己生成的,每次打开APP会变,所以我们把生成的CFUUID保存到Keychain里,以便作为唯一设备码使用。(不可刷机,恢复出厂或者一键新机)

从Keychain里获取CFUDID,没有则新生成CFUDID并保存到Keychain

+(NSString*) GetIOSUUID
{
    NSError *error;
    NSString * string = [SFHFKeychainUtils getPasswordForUsername:@"UUID" andServiceName:@"com.cxkj.597131035" error:&error];
    if (!string) {
    }
    if(error || !string){
        NSLog(@"获取密码出错:%@", error);
        [self saveUUID];//保存
        string = [SFHFKeychainUtils getPasswordForUsername:@"UUID" andServiceName:@"com.cxkj.597131035" error:&error];
    }
    else{
        NSLog(@"获取密码成功!密码为%@",string);
    }
    return string;
}

+(void)saveUUID
{
    CFUUIDRef puuid = CFUUIDCreate( nil );
    CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
    NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
    CFRelease(puuid);
    CFRelease(uuidString);
    NSError *error;
    BOOL saved = [SFHFKeychainUtils storeUsername:@"UUID" andPassword:result
                             forServiceName:@"com.cxkj.597131035" updateExisting:YES error:&error];
    if (!saved) {
      NSLog(@"保存密码时出错:%@", error);
    }else{
      NSLog(@"保存密码成功!%@",result);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容