前言
查看了苹果官方提供的获取关于唯一UUID方法,有一个叫做KeychainItemWrapper.h
的很早的类,下载下来研究了一下后,自己写了个Demo放在了Github上,感兴趣的同学可以下载下来看一下。
-
提供两个方法供选择
1.google到了SFHFKeychainUtils,一个基于KeyChain封装的简单操作的第三方类库。
2.自己写的UDIDManager,同样的也是基于KeyChain封装的库
使用方法
-
SFHFKeychainUtils使用方法
1.引入SFHKeychainUtils.h/m文件(ARC中配置targets->Build Phases->SFHKeychainUtils.m添加-fno-objc-arc)
2.引入Security.framework类库
-
UDIDManager使用方法
1.引入UDIDManager.h/m文件
2.引入Security.framework类库
核心代码
SFHFKeychainUtils用法
#pragma mark -获取唯一UUID
- (NSString*)getUUID {
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
NSString *userName = infoDict[@"CFBundleName"];
NSString *serviceName = infoDict[@"CFBundleIdentifier"];
NSString *uuid = [SFHFKeychainUtils getPasswordForUsername:userName andServiceName:serviceName error:nil];
if (uuid.length==0) {
uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
[SFHFKeychainUtils storeUsername:userName andPassword:uuid forServiceName:serviceName updateExisting:1 error:nil];
}
return uuid;
}
UDIDManager用法
// 清除UDID
// [UDIDManager clearUDID];
// 获取UDID
NSString *udid = [UDIDManager UDID];
if (udid == nil) {
udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
if ([UDIDManager saveUDID:udid]) {
NSLog(@"save OK");
} else {
NSLog(@"save fail");
}
}
NSLog(@"udid %@", [UDIDManager UDID]);
个人体验
个人觉得还是UDIDManager使用起来比较方便一些
说明
哪位有更好的解决方法希望能给我留言,大家一起学习,一起进步