美文网首页程序猿阵线联盟-汇总各类技术干货
IOS之如何通过KeychainItemWrapper获取到不变

IOS之如何通过KeychainItemWrapper获取到不变

作者: 辛小二 | 来源:发表于2018-03-08 11:38 被阅读329次

    目录

    一、UDID简介
    二、UDID简介
    1、老方法获取UUID(一旦卸载app UUID也会随之改变)
    2、新方法获取UUID(通过KeychainItemWrapper获取不变的UUID)
    
    3、KeychainItemWrapper的使用方式

    正文如下~❤️

    一、UDID简介
    1.UDID(Unique Device Identifier) --->在IOS7中被禁止使用
    

    UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。

    二、UUID简介
    1.UUID(Universally Unique Identifier)  --->在IOS7被禁止使用
    

    UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码.

    2、老方法获取UUID(一旦卸载app UUID也会随之改变)
    
    +(NSString *)getUUID{
        CFUUIDRef uuid = CFUUIDCreate(NULL);
        assert(uuid != NULL);
        CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);
        
        NSLog(@"uuidStr------》%@",uuidStr);
        return uuidStr;
    }
    

    备注: 上面方法获取UUID不唯一的最重要因素就是在IOS7被禁止使用~

    2、新方法获取UUID(通过KeychainItemWrapper获取不变的UUID)
    

    1)、导入secutity.framework

    导入secutity.framework 导入secutity.framework

    导入成功~

    2)、下载KeychainItemWrapper.h/.m文件导入工程中

    KeychainItemWrapper下载入口

    下载好之后 你只需要将KeychainItemWrapper.h/.m分别倒入自己的项目当中~

    3)、禁用KeychainItemWrapper.h/.m文件的ARC

    现在已经流行ARC机制,我们创建工程也是默认的全局使用ARC,但是这两个文件因为年代久远吧,还不是ARC而是MRC,可以在其代码中看到大量MRC的内容比如release之类的,如果不加修改,直接运行会报很多错误,所以有两个解决办法,第一个把所有报错的地方由MRC方式改成ARC方式,这种方法太麻烦,第二种就是直接禁用这个文件的ARC就好了,方法如下:

    先在左侧文件列表中选中项目名称,然后选中TARGETS,中间界面选中Build Phases,然后在Compile Sources中找到要禁用的文件,这里是KeychainItemWrapper.m,然后双击修改其Compiler Flags值为 -fno-objc-arc,如下:

    20150906194435181.jpeg

    4)、通过KeychainItemWrapper 获取 UUID代码如下~

    导入头文件 #import "KeychainItemWrapper.h"

    +(NSString *)getUserUUID{
        
        KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"*******" accessGroup:nil];
        NSString *UUIDString = [wrapper objectForKey:(__bridge id)kSecValueData];
        if (UUIDString.length == 0) {
            UUIDString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
            [wrapper setObject:UUIDString forKey:(__bridge id)kSecValueData];
        }
        NSLog(@"%@", UUIDString);
        return UUIDString;
    }
    

    搞定~ 以上就是 通过KeychainItemWrapper 来获取UUID的使用方法 谢谢~希望可以帮到你~

    相关文章

      网友评论

        本文标题:IOS之如何通过KeychainItemWrapper获取到不变

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