IOS之如何通过KeychainItemWrapper获取到不变
目录
一、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.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.jpeg4)、通过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的使用方法 谢谢~希望可以帮到你~