iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享

第一步,引入相关文件

1、添加资源库

secruity.framework

iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享_第1张图片
图片.png

2、添加钥匙串工具类文件

SSKeychain.h,SSKeychain.m
下载地址:https://github.com/samsoffes/sskeychain/

iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享_第2张图片
图片.png

第二步,开启钥匙串共享

iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享_第3张图片
图片.png

在keychain groups中添加一个共享标识,例如:GFJD892DG9.GrassInfoAppFamily
其中“GFJD892DG9”为开发team ID,

查找team ID 看下图 :

iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享_第4张图片
图片.png
iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享_第5张图片
图片.png

第三步,获取标识符并保存至钥匙串


//导入对应头文件
#import 
#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中一个“共享标识”也必须保持一致。

你可能感兴趣的:(iOS 保存IDFA到钥匙串(keychain),IDFA多应用间keychain共享)