iOS设备唯一标识

作者: 门前有棵葡萄树 | 来源:发表于2016-08-23 11:21 被阅读182次

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

    相关文章

      网友评论

      本文标题:iOS设备唯一标识

      本文链接:https://www.haomeiwen.com/subject/plagsttx.html