iOS如何卸載重裝后設備碼不變

設備碼做為激活碼的綁定特征,很多時候因為用戶的操作不當或者作者的寫法邏輯不對,導致激活碼容易掉授權(quán)。
最好的方法還是用手機的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);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容