iOS设备唯一标识

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不变 这个获取的唯一标示就不会变

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容