第一步,引入相關(guān)文件
1、添加資源庫
secruity.framework

圖片.png
2、添加鑰匙串工具類文件
SSKeychain.h,SSKeychain.m
下載地址:https://github.com/samsoffes/sskeychain/

圖片.png
第二步,開啟鑰匙串共享

圖片.png
在keychain groups中添加一個(gè)共享標(biāo)識(shí),例如:GFJD892DG9.GrassInfoAppFamily
其中“GFJD892DG9”為開發(fā)team ID,
查找team ID 看下圖 :

圖片.png

圖片.png
第三步,獲取標(biāo)識(shí)符并保存至鑰匙串
//導(dǎo)入對(duì)應(yīng)頭文件
#import <Security/Security.h>
#import "SSKeychain.h"
// 開始使用保存、讀取
// 獲取用戶手機(jī)號(hào)IDFA廣告標(biāo)識(shí)
+ (NSString *)getDeviceIDFA {
NSError *error = nil;
//然后,從鑰匙串讀取UUID:
NSString *IDFA = [SSKeychain passwordForService:@"testUUIDKey"account:@"UUID_IDFA" error:&error];
// 判斷是否保存
if ([error code] == SSKeychainErrorNotFound) {
NSLog(@"Passwordnot found");
ASIdentifierManager *manager = [ASIdentifierManager sharedManager];
// iOS10 之后最好加一個(gè)判斷 [[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled] 返回值是BOOL值 如果返回的YES說明沒有 “開啟限制廣告跟蹤”,可以獲取到正確的idfa 如果返回的是NO,說明等待你的就是一串00000000000
if ([manager isAdvertisingTrackingEnabled]) {
IDFA = [[manager advertisingIdentifier] UUIDString];
}
else {
IDFA = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
//保存數(shù)據(jù)
[SSKeychain setPassword:IDFA forService:@"testUUIDKey"account:@"UUID_IDFA"];
}
return IDFA;
}
經(jīng)過上面3步,已經(jīng)可以實(shí)現(xiàn)IDFA保存至鑰匙串并獲取使用,如果需要多個(gè)項(xiàng)目應(yīng)用之間共享讀取保存的IDFA請(qǐng)看下面操作步驟!??!
應(yīng)用共享IDFA操作
新建應(yīng)用項(xiàng)目,在新項(xiàng)目中重復(fù)上面第一步、第二步,在新項(xiàng)目設(shè)置好后即可直接操作第三步讀取前項(xiàng)目保存的IDFA,如防止前應(yīng)用沒有保存,在新項(xiàng)目中也可以做保存讀取操作,以供下個(gè)應(yīng)用使用。
注意:在新、舊項(xiàng)目第三步讀取時(shí)的service的key和account的key必須保持一致。
第二步中的keychain groups中一個(gè)“共享標(biāo)識(shí)”也必須保持一致。