第一步,引入相關文件
1、添加資源庫
secruity.framework
圖片.png
2、添加鑰匙串工具類文件
SSKeychain.h,SSKeychain.m
下載地址:https://github.com/samsoffes/sskeychain/
圖片.png
第二步,開啟鑰匙串共享
圖片.png
在keychain groups中添加一個共享標識,例如:GFJD892DG9.GrassInfoAppFamily
其中“GFJD892DG9”為開發team ID,
查找team ID 看下圖 :
圖片.png
圖片.png
第三步,獲取標識符并保存至鑰匙串
//導入對應頭文件
#import <Security/Security.h>
#import "SSKeychain.h"
// 開始使用保存、讀取
// 獲取用戶手機號IDFA廣告標識
+ (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 之后最好加一個判斷 [[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled] 返回值是BOOL值 如果返回的YES說明沒有 “開啟限制廣告跟蹤”,可以獲取到正確的idfa 如果返回的是NO,說明等待你的就是一串00000000000
if ([manager isAdvertisingTrackingEnabled]) {
IDFA = [[manager advertisingIdentifier] UUIDString];
}
else {
IDFA = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
//保存數據
[SSKeychain setPassword:IDFA forService:@"testUUIDKey"account:@"UUID_IDFA"];
}
return IDFA;
}
經過上面3步,已經可以實現IDFA保存至鑰匙串并獲取使用,如果需要多個項目應用之間共享讀取保存的IDFA請看下面操作步驟!!!
應用共享IDFA操作
新建應用項目,在新項目中重復上面第一步、第二步,在新項目設置好后即可直接操作第三步讀取前項目保存的IDFA,如防止前應用沒有保存,在新項目中也可以做保存讀取操作,以供下個應用使用。
注意:在新、舊項目第三步讀取時的service的key和account的key必須保持一致。
第二步中的keychain groups中一個“共享標識”也必須保持一致。