第一步,引入相关文件
1、添加资源库
secruity.framework
图片.png2、添加钥匙串工具类文件
SSKeychain.h,SSKeychain.m
下载地址:https://github.com/samsoffes/sskeychain/
第二步,开启钥匙串共享
图片.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中一个“共享标识”也必须保持一致。
网友评论