【iOS】獲取一臺設備唯一標識的方法有哪些?

  • 現(xiàn)在常用的是用UUID+keychain結(jié)合來實現(xiàn)這個需求。

    // 獲取一個UUID
    

// 注意:每次調(diào)用這個方法或者卸載應用重新安裝,生成UUID都是不同的。

  • (NSString*)uuid {
    CFUUIDRef uuid = CFUUIDCreate( nil );
    CFStringRef uuidString = CFUUIDCreateString( nil, uuid );
    NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
    CFRelease(uuid);
    CFRelease(uuidString);
    return result;
    }

// 將生成的UUID保存到 keychain(鑰匙串) 中
// keychain 是蘋果公司Mac OS中的密碼管理系統(tǒng),keychain 是獨立在App之外的,是和系統(tǒng)同一等級的。保存在里面的值不會隨著卸載應用再重新安裝而改變。只有手機系統(tǒng)恢復出廠設置或者抹掉所有數(shù)據(jù)才會重置掉鑰匙串里保存的值。

  • (void)saveUuidWithKeyChain {
    KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"UUID" accessGroup:@"com.xxx.www"];
    NSString *strUUID = [keychainItem objectForKey:(id)kSecValueData];
    if (strUUID == nil || [strUUID isEqualToString:@""]) {
    [keychainItem setObject:[self uuid] forKey:(id)kSecValueData];
    }
    }

// 從keychain中獲取UUID的值

  • (NSString *)getKeychain {
    KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc]initWithIdentifier:@"UUID" accessGroup:@"com.xxx.www"];
    NSString *strUUID = [keychainItem objectForKey:(id)kSecValueData];
    return strUUID;
    }

整個邏輯是這樣的:先從keychain取UUID,如果能取到,就用這個比對,如果取不到就重新生成一個保存起來。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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