前言
查看了蘋果官方提供的獲取關于唯一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使用起來比較方便一些
說明
哪位有更好的解決方法希望能給我留言,大家一起學習赔桌,一起進步