iOS設(shè)備唯一標(biāo)識(shí)

YWOnlySign

iOS 10.3 還未正式發(fā)布,beta 版中一個(gè)關(guān)于keychain 特性的小修改,就已經(jīng)引起了廣泛的關(guān)注。 改動(dòng)如下: 如果 App 被刪除,之前存儲(chǔ)于 keychain 中的數(shù)據(jù)也會(huì)一同被清除。

目前常用的獲取UDID的方法就是用第三方OpenUDID
但是這種方法在卸載了APP之后可能會(huì)導(dǎo)致UDID產(chǎn)生變化,給后臺(tái)造成誤導(dǎo)

使用 <a >YWOnlySign</a> 獲取唯一標(biāo)識(shí),只要APP的BundleID不變的話,獲取的唯一標(biāo)識(shí)就不會(huì)變,可以準(zhǔn)確的標(biāo)識(shí)設(shè)備。

喜歡的朋友 請(qǐng)賜一顆星星給我哈 嘻嘻
github地址

https://github.com/ywdonga/YWOnlySign

支持pod

pod 'YWOnlySign', '~> 1.0.0'

使用方法

NSString *uuid = [YWOnlySign getUUID];

YWOnlySign 通過隨機(jī)生成一段 字符串 作為設(shè)備的唯一標(biāo)示

+ (NSString *)uuid {
CFUUIDRef puuid = CFUUIDCreate(nil);
CFStringRef uuidString = CFUUIDCreateString(nil, puuid);
NSString *result = (NSString *)CFBridgingRelease(CFStringCreateCopy(NULL, uuidString));
CFRelease(puuid);
CFRelease(uuidString);
result = [result lowercaseString];
return result;
}

再利用 bundleId 作為key 存入Keychain

+ (void)save:(NSString *)service data:(id)data {
//Get search dictionary
NSMutableDictionary *keychainQuery = [self getKeychainQuery:service];
//Delete old item before add new item
SecItemDelete((__bridge_retained CFDictionaryRef)keychainQuery);
//Add new object to search dictionary(Attention:the data format)
[keychainQuery setObject:[NSKeyedArchiver archivedDataWithRootObject:data] forKey:(__bridge_transfer id)kSecValueData];
//Add item to keychain with the search dictionary
SecItemAdd((__bridge_retained CFDictionaryRef)keychainQuery, NULL);
}

即使APP卸載了,重新安裝 只要bundleId不變 這個(gè)獲取的唯一標(biāo)示就不會(huì)變

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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