Commit 848180b3 authored by 艾娇平's avatar 艾娇平

1、移除旧的埋点库

2、ios14适配,增加idfa授权请求
3、添加通用参数ua
parent 74b89c03
...@@ -35,9 +35,6 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -35,9 +35,6 @@ NS_ASSUME_NONNULL_BEGIN
+ (instancetype)sharedClient; + (instancetype)sharedClient;
/** 用于Phobos库从old更新到new使用,在全量之后删除相关逻辑 */
@property (nonatomic, assign) BOOL isGray;
@property (nonatomic, assign) BOOL isGraySendNow;//控制实时上报 @property (nonatomic, assign) BOOL isGraySendNow;//控制实时上报
// Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题 // Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题
...@@ -121,7 +118,8 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -121,7 +118,8 @@ NS_ASSUME_NONNULL_BEGIN
从主项目获取当前显示的controller 从主项目获取当前显示的controller
*/ */
@property (nonatomic, copy) UIViewController * (^getTopController) (void); @property (nonatomic, copy) UIViewController * (^getTopController) (void);
/// ua 为了应对苹果14.5之后不允许再直接读取idfa采取的归因方案--ip+ua
@property (nonatomic, copy) NSString *wk_ua;
#pragma mark - 事件采集 #pragma mark - 事件采集
/** 点击事件采集 */ /** 点击事件采集 */
......
...@@ -336,6 +336,7 @@ static NewPhobos *_sharedClient; ...@@ -336,6 +336,7 @@ static NewPhobos *_sharedClient;
[deviceParams setValue:PhobosSafeString(_networkStatus) forKey:@"net_type"]; [deviceParams setValue:PhobosSafeString(_networkStatus) forKey:@"net_type"];
[deviceParams setValue:PhobosSafeString([PhobosUtil platform]) forKey:@"model"]; [deviceParams setValue:PhobosSafeString([PhobosUtil platform]) forKey:@"model"];
[deviceParams setValue:PhobosSafeString([UIDevice currentDevice].systemVersion) forKey:@"sys_version"]; [deviceParams setValue:PhobosSafeString([UIDevice currentDevice].systemVersion) forKey:@"sys_version"];
[deviceParams setValue:PhobosSafeString(_wk_ua) forKey:@"ua"];
NSMutableDictionary *appParams = [NSMutableDictionary new]; NSMutableDictionary *appParams = [NSMutableDictionary new];
[appParams setValue:PhobosSafeString(_greyType) forKey:@"grey_type"]; [appParams setValue:PhobosSafeString(_greyType) forKey:@"grey_type"];
...@@ -343,7 +344,7 @@ static NewPhobos *_sharedClient; ...@@ -343,7 +344,7 @@ static NewPhobos *_sharedClient;
[appParams setValue:PhobosSafeString(_appVersion) forKey:@"version"]; [appParams setValue:PhobosSafeString(_appVersion) forKey:@"version"];
[appParams setValue:PhobosSafeString(_channelId) forKey:@"channel"]; [appParams setValue:PhobosSafeString(_channelId) forKey:@"channel"];
[appParams setValue:PhobosSafeString(_userType) forKey:@"user_type"]; [appParams setValue:PhobosSafeString(_userType) forKey:@"user_type"];
[appParams setValue:@(_isGray) forKey:@"is_gray"]; [appParams setValue:@(YES) forKey:@"is_gray"];
[appParams setValue:PhobosSafeString(_currentCityId) forKey:@"current_city_id"]; [appParams setValue:PhobosSafeString(_currentCityId) forKey:@"current_city_id"];
[appParams setValue:@(_serialId++) forKey:@"serial_id"]; [appParams setValue:@(_serialId++) forKey:@"serial_id"];
......
//
// Phobos.h
// GengmeiDoctor
// Data Statistic Client For Mars
// Created by Thierry on 16/1/26.
// Copyright © 2016年 wanmeizhensuo. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PhobosPVProtocol.h"
#import <CoreLocation/CLLocation.h>
#import "PhobosConfig.h"
NS_ASSUME_NONNULL_BEGIN
@interface OldPhobos : NSObject
/**
* @brief 开启Phobos统计,默认以BATCH方式发送log.
*
* @param appName 通常由数据端与客户端一起确认的区分不同app的名字
* @param channelId 发布渠道
*
* @return Phobos实例
*
* @since 0.0.1
*/
+ (OldPhobos *)clientWithAppName:(NSString *)appName channelId:(NSString *)channelId;
+ (instancetype)sharedClient;
+ (void)setSharedClient:(OldPhobos *)client;
#pragma mark - SDK配置
// Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题
@property(nonatomic, copy) void (^captureNullExpection) (NSString *eventId, NSDictionary *info);
/**
网络状态 wifi=1, mobile=0, 不连通=-1
*/
@property (nonatomic, copy) NSString *netStatus;
/**
//没有网络连接
public static final String NETWORN_NONE = "none";
//wifi连接
public static final String NETWORN_WIFI = "wifi";
//手机网络数据连接类型
public static final String NETWORN_2G = "2G";
public static final String NETWORN_3G = "3G";
public static final String NETWORN_4G = "4G";
public static final String NETWORN_MOBILE = "other";
*/
@property (nonatomic, copy) NSString *networkStatus;
/**
* @brief 设置是否打印sdk的log信息,默认不开启
*
* @since 0.0.1
*/
@property (assign, nonatomic) BOOL logEnabled;
/**
* @brief 设置当前登录用户的ID,如果没有默认为@""
*
*
* @since 0.0.2
*/
@property (strong, nonatomic) NSString *userId;
/*!
* @author zhaiguojun, 16-05-31
*
* @brief 用户当前的城市id
*
*
* @since 0.2.7
*/
@property (strong, nonatomic) NSString *currentCityId;
@property (strong, nonatomic) CLLocation *gps;
/**
* 记录用户类型
*/
@property (strong, nonatomic) NSMutableDictionary *userType;
/**
数据接收的服务器API
*/
@property (copy, nonatomic) NSString *serverAPI;
/**
当前APP请求接口的 APIHOST(GMServerDomains.apiHost 主要用于flutter AppDelegate 中初始化需要传值
*/
@property (nonatomic, copy) NSString *apiHost;
/**
当前APP请求接口的 cookie(主要用于flutter) 获取到cookie 的时候穿过来 或者cookie 有变化的时候传过来
*/
@property (nonatomic, copy) NSString *cookie;
/**
灰度组, since 7.7.65
*/
@property (nonatomic, copy) NSString *greyType;
/**
包的类型:APPSTORE、RELEASE、DEBUG
*/
@property (nonatomic, assign) PhobosSigningType signingType;
/**
从主项目获取当前显示的controller
*/
@property (nonatomic, copy) UIViewController * (^getTopController) (void);
#pragma mark - 事件采集
/**
* @brief 自定义事件,数量统计.
*
* @param eventId 事件Id
* @attributes 参数
* @sendNow 是否实时发送,默认为NO
*
* @since 0.0.1
*/
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes;
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow;
+ (void)track:(NSString *)eventId;
/**
* @brief 自定义事件,数量统计 7730 精准曝光.
*
* @param eventId 事件Id
* @attributes 参数
* @sendNow 是否实时发送,默认为NO
* @currentAPI 当前传过来的API
* @
*/
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes currentAPI:(NSString *)currentAPI;
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow currentAPI:(NSString *)currentAPI;
+ (void)track:(NSString *)eventId currentAPI:(NSString *)currentAPI;
/**
* @author 翟国钧, 16-02-03 16:02:30
*
* @brief H5调用的埋点方法
*
* @param jsonString h5传过来的参数
*
* @since 0.0.1
*/
+ (void)trackJsEvent:(NSString *)jsonString;
/**
* @brief PV事件开始。当controller viewWillAppear时调用
*/
- (void)onPVStart:(UIResponder<PhobosPVProtocol> *)page;
/**
* @brief PV事件结束。当controller viewWillDisAppear时调用
*/
- (void)onPVEnd:(UIResponder<PhobosPVProtocol> *)page;
/**
* 为隐私弹窗触发on_app_session_over埋点使用
*/
- (void)handleAppInBackgound;
/**
* @author 翟国钧, 16-03-08 11:03:45
*
* @brief 有些事件需要模拟pv事件,统一用该方法处理,in out 时间相同.点击一次即触发
*
* @param pageName 控件所在VC的pageName
* @param bid 业务id
* @param referer 上个月面的pagename
*
* @since 5.9.1
*/
- (void)simulativePV:(NSString *)pageName businessId:(NSString *)bid referer:(NSString *)referer;
@end
NS_ASSUME_NONNULL_END
This diff is collapsed.
...@@ -116,6 +116,8 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -116,6 +116,8 @@ NS_ASSUME_NONNULL_BEGIN
从主项目获取当前显示的controller 从主项目获取当前显示的controller
*/ */
@property (nonatomic, copy) UIViewController * (^getTopController) (void); @property (nonatomic, copy) UIViewController * (^getTopController) (void);
/// ua 为了应对苹果14.5之后不允许再直接读取idfa采取的归因方案--ip+ua
@property (nonatomic, copy) NSString *wk_ua;
#pragma mark - 事件采集 #pragma mark - 事件采集
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
// //
#import "Phobos.h" #import "Phobos.h"
#import "OldPhobos.h"
#import "NewPhobos.h" #import "NewPhobos.h"
static Phobos *sharedClient = nil; static Phobos *sharedClient = nil;
...@@ -14,7 +13,6 @@ static BOOL isGray = YES; ...@@ -14,7 +13,6 @@ static BOOL isGray = YES;
@interface Phobos () @interface Phobos ()
@property (nonatomic, strong) OldPhobos *oldPhobos;
@property (nonatomic, strong) NewPhobos *rePhobos; @property (nonatomic, strong) NewPhobos *rePhobos;
...@@ -46,22 +44,9 @@ static BOOL isGray = YES; ...@@ -46,22 +44,9 @@ static BOOL isGray = YES;
- (instancetype)initWithAppName:(NSString *)appName channelId:(NSString *)channelId{ - (instancetype)initWithAppName:(NSString *)appName channelId:(NSString *)channelId{
if (self = [super init]) { if (self = [super init]) {
//判断 PhobosGray 是否为空值
if ([[NSUserDefaults standardUserDefaults] objectForKey:PhobosGray] == nil) {
isGray = YES;
}else{
isGray = [[[NSUserDefaults standardUserDefaults] objectForKey:PhobosGray] boolValue];
}
// isGray在config接口获取,会保存在NSUserDefaults的PhobosGray中,当次不使用,在下一次冷启动通过该灰度,初始化埋点库 // isGray在config接口获取,会保存在NSUserDefaults的PhobosGray中,当次不使用,在下一次冷启动通过该灰度,初始化埋点库
if (isGray) { _rePhobos = [NewPhobos clientWithAppName:appName channelId:channelId];
_rePhobos = [NewPhobos clientWithAppName:appName channelId:channelId]; sharedClient = _rePhobos;
sharedClient = _rePhobos;
_rePhobos.isGray = YES;
} else {
_oldPhobos = [OldPhobos clientWithAppName:appName channelId:channelId];
[OldPhobos setSharedClient:_oldPhobos];
sharedClient = _oldPhobos;
}
} }
return self; return self;
} }
...@@ -83,164 +68,124 @@ static BOOL isGray = YES; ...@@ -83,164 +68,124 @@ static BOOL isGray = YES;
} }
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes { + (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes {
if (isGray) { // 新埋点库支持实时上报数据,取灰度字段去控制
// 新埋点库支持实时上报数据,取灰度字段去控制 NewPhobos *phobos = [NewPhobos sharedClient];
NewPhobos *phobos = [NewPhobos sharedClient]; [NewPhobos track:eventId attributes:attributes sendNow:phobos.isGraySendNow];
[NewPhobos track:eventId attributes:attributes sendNow:phobos.isGraySendNow];
} else {
[OldPhobos track:eventId attributes:attributes];
}
} }
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow { + (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow {
if (isGray) { [NewPhobos track:eventId attributes:attributes sendNow:sendNow];
[NewPhobos track:eventId attributes:attributes sendNow:sendNow];
} else {
[OldPhobos track:eventId attributes:attributes sendNow:sendNow];
}
} }
+ (void)track:(NSString *)eventId { + (void)track:(NSString *)eventId {
if (isGray) { [NewPhobos track:eventId];
[NewPhobos track:eventId];
} else {
[OldPhobos track:eventId];
}
} }
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes currentAPI:(NSString *)currentAPI { + (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes currentAPI:(NSString *)currentAPI {
if (isGray) { [NewPhobos track:eventId attributes:attributes currentAPI:currentAPI];
[NewPhobos track:eventId attributes:attributes currentAPI:currentAPI];
} else {
[OldPhobos track:eventId attributes:attributes currentAPI:currentAPI];
}
} }
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow currentAPI:(NSString *)currentAPI { + (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow currentAPI:(NSString *)currentAPI {
if (isGray) { [NewPhobos track:eventId attributes:attributes sendNow:sendNow currentAPI:currentAPI];
[NewPhobos track:eventId attributes:attributes sendNow:sendNow currentAPI:currentAPI];
} else {
[OldPhobos track:eventId attributes:attributes sendNow:sendNow currentAPI:currentAPI];
}
} }
+ (void)track:(NSString *)eventId currentAPI:(NSString *)currentAPI { + (void)track:(NSString *)eventId currentAPI:(NSString *)currentAPI {
if (isGray) { [NewPhobos track:eventId currentAPI:currentAPI];
[NewPhobos track:eventId currentAPI:currentAPI];
} else {
[OldPhobos track:eventId currentAPI:currentAPI];
}
} }
/** /**
* @brief PV事件开始。当controller viewWillAppear时调用 * @brief PV事件开始。当controller viewWillAppear时调用
*/ */
- (void)onPVStart:(UIResponder<PhobosPVProtocol> *)page { - (void)onPVStart:(UIResponder<PhobosPVProtocol> *)page {
[_rePhobos onPVStart:page]; [_rePhobos onPVStart:page];
[_oldPhobos onPVStart:page];
} }
/** /**
* @brief PV事件结束。当controller viewWillDisAppear时调用 * @brief PV事件结束。当controller viewWillDisAppear时调用
*/ */
- (void)onPVEnd:(UIResponder<PhobosPVProtocol> *)page { - (void)onPVEnd:(UIResponder<PhobosPVProtocol> *)page {
[_rePhobos onPVEnd:page]; [_rePhobos onPVEnd:page];
[_oldPhobos onPVEnd:page];
} }
/** /**
* 为隐私弹窗触发on_app_session_over埋点使用 * 为隐私弹窗触发on_app_session_over埋点使用
*/ */
- (void)handleAppInBackgound { - (void)handleAppInBackgound {
if (isGray) { [_rePhobos handleAppInBackgound];
[_rePhobos handleAppInBackgound];
} else {
[_oldPhobos handleAppInBackgound];
}
} }
- (void)setCaptureNullExpection:(void (^)(NSString * _Nonnull, NSDictionary * _Nonnull))captureNullExpection { - (void)setCaptureNullExpection:(void (^)(NSString * _Nonnull, NSDictionary * _Nonnull))captureNullExpection {
_captureNullExpection = captureNullExpection; _captureNullExpection = captureNullExpection;
_rePhobos.captureNullExpection = captureNullExpection; _rePhobos.captureNullExpection = captureNullExpection;
_oldPhobos.captureNullExpection = captureNullExpection;
} }
- (void)setNetStatus:(NSString *)netStatus { - (void)setNetStatus:(NSString *)netStatus {
_netStatus = netStatus; _netStatus = netStatus;
_rePhobos.netStatus = netStatus; _rePhobos.netStatus = netStatus;
_oldPhobos.netStatus = netStatus;
} }
- (void)setNetworkStatus:(NSString *)networkStatus { - (void)setNetworkStatus:(NSString *)networkStatus {
_networkStatus = networkStatus; _networkStatus = networkStatus;
_rePhobos.networkStatus = networkStatus; _rePhobos.networkStatus = networkStatus;
_oldPhobos.networkStatus = networkStatus;
} }
- (void)setLogEnabled:(BOOL)logEnabled { - (void)setLogEnabled:(BOOL)logEnabled {
_logEnabled = logEnabled; _logEnabled = logEnabled;
_rePhobos.logEnabled = logEnabled; _rePhobos.logEnabled = logEnabled;
_oldPhobos.logEnabled = logEnabled;
} }
- (void)setUserId:(NSString *)userId { - (void)setUserId:(NSString *)userId {
_userId = userId; _userId = userId;
_rePhobos.userId = userId; _rePhobos.userId = userId;
_oldPhobos.userId = userId;
} }
- (void)setCurrentCityId:(NSString *)currentCityId { - (void)setCurrentCityId:(NSString *)currentCityId {
_currentCityId = currentCityId; _currentCityId = currentCityId;
_rePhobos.currentCityId = currentCityId; _rePhobos.currentCityId = currentCityId;
_oldPhobos.currentCityId = currentCityId;
} }
- (void)setGps:(CLLocation *)gps { - (void)setGps:(CLLocation *)gps {
_gps = gps; _gps = gps;
_rePhobos.gps = gps; _rePhobos.gps = gps;
_oldPhobos.gps = gps;
} }
- (void)setUserType:(NSMutableDictionary *)userType { - (void)setUserType:(NSMutableDictionary *)userType {
_userType = userType; _userType = userType;
_rePhobos.userType = userType; _rePhobos.userType = userType;
_oldPhobos.userType = userType;
} }
- (void)setApiHost:(NSString *)apiHost { - (void)setApiHost:(NSString *)apiHost {
_apiHost = apiHost; _apiHost = apiHost;
_rePhobos.apiHost = apiHost; _rePhobos.apiHost = apiHost;
_oldPhobos.apiHost = apiHost;
} }
- (void)setServerAPI:(NSString *)serverAPI { - (void)setServerAPI:(NSString *)serverAPI {
_serverAPI = serverAPI; _serverAPI = serverAPI;
_rePhobos.serverAPI = serverAPI; _rePhobos.serverAPI = serverAPI;
_oldPhobos.serverAPI = serverAPI;
} }
-(void)setCookie:(NSString *)cookie { -(void)setCookie:(NSString *)cookie {
_cookie = cookie; _cookie = cookie;
_rePhobos.cookie = cookie; _rePhobos.cookie = cookie;
_oldPhobos.cookie = cookie;
} }
- (void)setGreyType:(NSString *)greyType { - (void)setGreyType:(NSString *)greyType {
_greyType = greyType; _greyType = greyType;
_rePhobos.greyType = greyType; _rePhobos.greyType = greyType;
_oldPhobos.greyType = greyType;
} }
- (void)setSigningType:(PhobosSigningType)signingType { - (void)setSigningType:(PhobosSigningType)signingType {
_signingType = signingType; _signingType = signingType;
_rePhobos.signingType = signingType; _rePhobos.signingType = signingType;
_oldPhobos.signingType = signingType;
} }
- (void)setGetTopController:(UIViewController * _Nonnull (^)(void))getTopController { - (void)setGetTopController:(UIViewController * _Nonnull (^)(void))getTopController {
_getTopController = getTopController; _getTopController = getTopController;
_rePhobos.getTopController = getTopController; _rePhobos.getTopController = getTopController;
_oldPhobos.getTopController = getTopController;
} }
- (void)setWk_ua:(NSString *)wk_ua {
_wk_ua = wk_ua;
_rePhobos.wk_ua = wk_ua;
}
@end @end
......
...@@ -24,8 +24,6 @@ static NSString *sdkVersion = @"2.0.5"; ...@@ -24,8 +24,6 @@ static NSString *sdkVersion = @"2.0.5";
#define phobosLog(...) #define phobosLog(...)
#endif #endif
#define PhobosGray @"PhobosGray"
#define PhobosBeginTime @"PhobosBeginTime" //记录APP打开|从后台启动时的时间戳 #define PhobosBeginTime @"PhobosBeginTime" //记录APP打开|从后台启动时的时间戳
#define PhobosEndTime @"PhobosEndTime" //记录APP退出|退到后台时的时间戳 #define PhobosEndTime @"PhobosEndTime" //记录APP退出|退到后台时的时间戳
#define PhobosCacheKey @"PhobosCacheKey" //old 存放持久化埋点数据的key #define PhobosCacheKey @"PhobosCacheKey" //old 存放持久化埋点数据的key
......
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/ASIdentifierManager.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
extern NSString *const KprivatePolicyNotification; extern NSString *const KprivatePolicyNotification;
typedef void (^PhobosGetIDFACompleteBlock)(NSDictionary *dict); typedef void (^PhobosGetIDFACompleteBlock)(NSString *idfa, NSInteger authoriza);
@interface PhobosDevice : NSObject @interface PhobosDevice : NSObject
...@@ -35,6 +35,10 @@ typedef void (^PhobosGetIDFACompleteBlock)(NSDictionary *dict); ...@@ -35,6 +35,10 @@ typedef void (^PhobosGetIDFACompleteBlock)(NSDictionary *dict);
/// 用户是否点击了隐私协议 点击同意之后才会获取 device_id /// 用户是否点击了隐私协议 点击同意之后才会获取 device_id
+ (BOOL)showPrivatePolicy; + (BOOL)showPrivatePolicy;
/// 请求获取IDFA授权 (ios14 异步回调, ios14之前直接回调)
/// @param completeBlock 回调执行结果
+ (void)requestTrackingAuthorizaWithCompletionHandler:(PhobosGetIDFACompleteBlock)completeBlock;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#import <SAMKeychain/SAMKeychain.h> #import <SAMKeychain/SAMKeychain.h>
#import <GMCache/GMCache.h> #import <GMCache/GMCache.h>
#import "PhobosUtil.h" #import "PhobosUtil.h"
//#import <AppTrackingTransparency/AppTrackingTransparency.h>
NSString *const KprivatePolicyNotification = @"gm_popup_private_policy_notification"; NSString *const KprivatePolicyNotification = @"gm_popup_private_policy_notification";
//钥匙串账户 //钥匙串账户
...@@ -29,7 +28,7 @@ static dispatch_queue_t queue; ...@@ -29,7 +28,7 @@ static dispatch_queue_t queue;
#pragma mark - getIDFA #pragma mark - getIDFA
//同步获取IDFA 直接从钥匙串中获取 适配ATTrackingManagerAuthorization可使用下面方法 /*同步获取IDFA 直接从钥匙串中获取 适配ATTrackingManagerAuthorization可使用下面方法
+ (NSString *)getIDFA { + (NSString *)getIDFA {
if (![PhobosDevice showPrivatePolicy]) { if (![PhobosDevice showPrivatePolicy]) {
return defaultIDFA; return defaultIDFA;
...@@ -47,58 +46,66 @@ static dispatch_queue_t queue; ...@@ -47,58 +46,66 @@ static dispatch_queue_t queue;
keyChainIDFA = defaultIDFA; keyChainIDFA = defaultIDFA;
} }
return keyChainIDFA; return keyChainIDFA;
} }*/
/** iOS 14 适配 ATTrackingManagerAuthorizationStatus /** iOS 14 适配 ATTrackingManagerAuthorizationStatus */
//同步获取IDFA 直接从钥匙串中获取 //同步获取IDFA 直接从钥匙串中获取
+ (NSString *)getIDFA { + (NSString *)getIDFA {
if (![PhobosDevice showPrivatePolicy]) {
return defaultIDFA;
}
//直接从钥匙串中获取 //直接从钥匙串中获取
NSString *keyChainIDFA = [self getKeyChainService:IDFA account:keyChainAccount]; NSString *keyChainIDFA = [self getKeyChainService:IDFA account:keyChainAccount];
//判断获取的钥匙串是否为空
if ([self checkIdfaIsNull:keyChainIDFA]) { if ([self checkIdfaIsNull:keyChainIDFA]) {
if (@available(iOS 14, *)) { keyChainIDFA = defaultIDFA;
// 如果是iOS14 未从钥匙串中获取到idfa直接按默认的
keyChainIDFA = defaultIDFA;
} else {
keyChainIDFA = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
if ([self checkIdfaIsNull:keyChainIDFA]) {
[self saveKeyChainWithValue:keyChainIDFA service:IDFA account:keyChainAccount];
}
}
} }
return keyChainIDFA; return keyChainIDFA;
} }
//同步获取IDFA /// 请求获取IDFA授权
+ (void)getIDFAString:(PhobosGetIDFACompleteBlock)completeBlock { /// @param completeBlock 回调执行结果
+ (void)requestTrackingAuthorizaWithCompletionHandler:(PhobosGetIDFACompleteBlock)completeBlock {
// iOS14及以上版本需要先请求权限
if (@available(iOS 14, *)) { if (@available(iOS 14, *)) {
__block NSString *idfaString = @"";
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
BOOL isAuthor = NO; dispatch_async(dispatch_get_main_queue(), ^{
if (status == ATTrackingManagerAuthorizationStatusAuthorized) { NSString *idfaString;
isAuthor = YES; if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
idfaString = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString; idfaString = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
if (![self checkIdfaIsNull:idfaString]) {
} [self saveKeyChainWithValue:idfaString service:IDFA account:keyChainAccount];
}
} else {
// NSLog(@"请在设置-隐私-跟踪中允许App请求跟踪");
}
if (completeBlock) {
completeBlock(idfaString,status);
}
});
}];
} else {
// iOS14以下版本依然使用原方式访问IDFA
// 判断在设置-隐私里用户是否打开了广告跟踪
NSInteger status = 0;
NSString *idfaString;
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
if (![self checkIdfaIsNull:idfaString]) { if (![self checkIdfaIsNull:idfaString]) {
// 标示 用户已授权打开
status = 3;
[self saveKeyChainWithValue:idfaString service:IDFA account:keyChainAccount]; [self saveKeyChainWithValue:idfaString service:IDFA account:keyChainAccount];
} }
} else {
completeBlock(@{@"idfa": idfaString, @"is_author": @(isAuthor)}); // 表示用户拒绝打开
}]; status = 2;
} else { // NSLog(@"请在设置-隐私-广告中打开广告跟踪功能");
// 使用原方式访问IDFA }
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; if (completeBlock) {
BOOL isAuthor = NO; completeBlock(idfaString,status);
if (![self checkIdfaIsNull:idfaString]) {
isAuthor = YES;
[self saveKeyChainWithValue:idfaString service:IDFA account:keyChainAccount];
} }
completeBlock(@{@"idfa": idfaString, @"is_author": @(isAuthor)});
} }
} }
*/
#pragma mark - 对IDFA判空处理 #pragma mark - 对IDFA判空处理
//检查idfa 是否为空 //检查idfa 是否为空
...@@ -106,7 +113,6 @@ static dispatch_queue_t queue; ...@@ -106,7 +113,6 @@ static dispatch_queue_t queue;
return !idfa.length || [idfa isEqualToString:defaultIDFA]; return !idfa.length || [idfa isEqualToString:defaultIDFA];
} }
#pragma mark - getIDFV #pragma mark - getIDFV
+ (NSString *)getIDFV { + (NSString *)getIDFV {
if (![PhobosDevice showPrivatePolicy]) { if (![PhobosDevice showPrivatePolicy]) {
...@@ -115,7 +121,6 @@ static dispatch_queue_t queue; ...@@ -115,7 +121,6 @@ static dispatch_queue_t queue;
return [[[UIDevice currentDevice] identifierForVendor] UUIDString]; return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} }
#pragma mark - getDEVICEID #pragma mark - getDEVICEID
+ (NSString *)getDEVICEID { + (NSString *)getDEVICEID {
if (![PhobosDevice showPrivatePolicy]) { if (![PhobosDevice showPrivatePolicy]) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment