程序猿阵线联盟-汇总各类技术干货

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

2018-03-08  本文已影响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的使用方法 谢谢~希望可以帮到你~

上一篇下一篇

猜你喜欢

热点阅读