YWOnlySign
iOS 10.3 还未正式发布,beta 版中一个关于keychain 特性的小修改,就已经引起了广泛的关注。 改动如下: 如果 App 被删除,之前存储于 keychain 中的数据也会一同被清除。
目前常用的获取UDID的方法就是用第三方OpenUDID
但是这种方法在卸载了APP之后可能会导致UDID产生变化,给后台造成误导
使用 <a href="https://github.com/ywdonga/YWOnlySign/">YWOnlySign</a> 获取唯一标识,只要APP的BundleID不变的话,获取的唯一标识就不会变,可以准确的标识设备。
喜欢的朋友 请赐一颗星星给我哈 嘻嘻
github地址
https://github.com/ywdonga/YWOnlySign
支持pod
pod 'YWOnlySign', '~> 1.0.0'
使用方法
NSString *uuid = [YWOnlySign getUUID];
YWOnlySign 通过随机生成一段 字符串 作为设备的唯一标示
+ (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不变 这个获取的唯一标示就不会变
网友评论