Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
GMPhobos
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gengmeiios
GMPhobos
Commits
848180b3
Commit
848180b3
authored
Apr 29, 2021
by
艾娇平
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、移除旧的埋点库
2、ios14适配,增加idfa授权请求 3、添加通用参数ua
parent
74b89c03
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
53 additions
and
286 deletions
+53
-286
NewPhobos.h
GMPhobos/Classes/NewPhobos.h
+2
-4
NewPhobos.m
GMPhobos/Classes/NewPhobos.m
+2
-1
OldPhobos.h
GMPhobos/Classes/OldPhobos.h
+0
-186
OldPhobos.m
GMPhobos/Classes/OldPhobos.m
+0
-0
Phobos.h
GMPhobos/Classes/Phobos.h
+2
-0
Phobos.m
GMPhobos/Classes/Phobos.m
+4
-59
PhobosConfig.h
GMPhobos/Classes/PhobosConfig.h
+0
-2
PhobosDevice.h
GMPhobos/Classes/PhobosDevice.h
+7
-3
PhobosDevice.m
GMPhobos/Classes/PhobosDevice.m
+36
-31
No files found.
GMPhobos/Classes/NewPhobos.h
View file @
848180b3
...
...
@@ -35,9 +35,6 @@ NS_ASSUME_NONNULL_BEGIN
+
(
instancetype
)
sharedClient
;
/** 用于Phobos库从old更新到new使用,在全量之后删除相关逻辑 */
@property
(
nonatomic
,
assign
)
BOOL
isGray
;
@property
(
nonatomic
,
assign
)
BOOL
isGraySendNow
;
//控制实时上报
// Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题
...
...
@@ -121,7 +118,8 @@ NS_ASSUME_NONNULL_BEGIN
从主项目获取当前显示的controller
*/
@property
(
nonatomic
,
copy
)
UIViewController
*
(
^
getTopController
)
(
void
);
/// ua 为了应对苹果14.5之后不允许再直接读取idfa采取的归因方案--ip+ua
@property
(
nonatomic
,
copy
)
NSString
*
wk_ua
;
#pragma mark - 事件采集
/** 点击事件采集 */
...
...
GMPhobos/Classes/NewPhobos.m
View file @
848180b3
...
...
@@ -336,6 +336,7 @@ static NewPhobos *_sharedClient;
[
deviceParams
setValue
:
PhobosSafeString
(
_networkStatus
)
forKey
:
@"net_type"
];
[
deviceParams
setValue
:
PhobosSafeString
([
PhobosUtil
platform
])
forKey
:
@"model"
];
[
deviceParams
setValue
:
PhobosSafeString
([
UIDevice
currentDevice
].
systemVersion
)
forKey
:
@"sys_version"
];
[
deviceParams
setValue
:
PhobosSafeString
(
_wk_ua
)
forKey
:
@"ua"
];
NSMutableDictionary
*
appParams
=
[
NSMutableDictionary
new
];
[
appParams
setValue
:
PhobosSafeString
(
_greyType
)
forKey
:
@"grey_type"
];
...
...
@@ -343,7 +344,7 @@ static NewPhobos *_sharedClient;
[
appParams
setValue
:
PhobosSafeString
(
_appVersion
)
forKey
:
@"version"
];
[
appParams
setValue
:
PhobosSafeString
(
_channelId
)
forKey
:
@"channel"
];
[
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
:
@
(
_serialId
++
)
forKey
:
@"serial_id"
];
...
...
GMPhobos/Classes/OldPhobos.h
deleted
100644 → 0
View file @
74b89c03
//
// 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
GMPhobos/Classes/OldPhobos.m
deleted
100644 → 0
View file @
74b89c03
This diff is collapsed.
Click to expand it.
GMPhobos/Classes/Phobos.h
View file @
848180b3
...
...
@@ -116,6 +116,8 @@ NS_ASSUME_NONNULL_BEGIN
从主项目获取当前显示的controller
*/
@property
(
nonatomic
,
copy
)
UIViewController
*
(
^
getTopController
)
(
void
);
/// ua 为了应对苹果14.5之后不允许再直接读取idfa采取的归因方案--ip+ua
@property
(
nonatomic
,
copy
)
NSString
*
wk_ua
;
#pragma mark - 事件采集
...
...
GMPhobos/Classes/Phobos.m
View file @
848180b3
...
...
@@ -6,7 +6,6 @@
//
#import "Phobos.h"
#import "OldPhobos.h"
#import "NewPhobos.h"
static
Phobos
*
sharedClient
=
nil
;
...
...
@@ -14,7 +13,6 @@ static BOOL isGray = YES;
@interface
Phobos
()
@property
(
nonatomic
,
strong
)
OldPhobos
*
oldPhobos
;
@property
(
nonatomic
,
strong
)
NewPhobos
*
rePhobos
;
...
...
@@ -46,22 +44,9 @@ static BOOL isGray = YES;
-
(
instancetype
)
initWithAppName
:
(
NSString
*
)
appName
channelId
:
(
NSString
*
)
channelId
{
if
(
self
=
[
super
init
])
{
//判断 PhobosGray 是否为空值
if
([[
NSUserDefaults
standardUserDefaults
]
objectForKey
:
PhobosGray
]
==
nil
)
{
isGray
=
YES
;
}
else
{
isGray
=
[[[
NSUserDefaults
standardUserDefaults
]
objectForKey
:
PhobosGray
]
boolValue
];
}
// isGray在config接口获取,会保存在NSUserDefaults的PhobosGray中,当次不使用,在下一次冷启动通过该灰度,初始化埋点库
if
(
isGray
)
{
_rePhobos
=
[
NewPhobos
clientWithAppName
:
appName
channelId
:
channelId
];
sharedClient
=
_rePhobos
;
_rePhobos
.
isGray
=
YES
;
}
else
{
_oldPhobos
=
[
OldPhobos
clientWithAppName
:
appName
channelId
:
channelId
];
[
OldPhobos
setSharedClient
:
_oldPhobos
];
sharedClient
=
_oldPhobos
;
}
}
return
self
;
}
...
...
@@ -83,164 +68,124 @@ static BOOL isGray = YES;
}
+
(
void
)
track
:
(
NSString
*
)
eventId
attributes
:
(
NSDictionary
*
)
attributes
{
if
(
isGray
)
{
// 新埋点库支持实时上报数据,取灰度字段去控制
NewPhobos
*
phobos
=
[
NewPhobos
sharedClient
];
[
NewPhobos
track
:
eventId
attributes
:
attributes
sendNow
:
phobos
.
isGraySendNow
];
}
else
{
[
OldPhobos
track
:
eventId
attributes
:
attributes
];
}
}
+
(
void
)
track
:
(
NSString
*
)
eventId
attributes
:
(
NSDictionary
*
)
attributes
sendNow
:
(
BOOL
)
sendNow
{
if
(
isGray
)
{
[
NewPhobos
track
:
eventId
attributes
:
attributes
sendNow
:
sendNow
];
}
else
{
[
OldPhobos
track
:
eventId
attributes
:
attributes
sendNow
:
sendNow
];
}
}
+
(
void
)
track
:
(
NSString
*
)
eventId
{
if
(
isGray
)
{
[
NewPhobos
track
:
eventId
];
}
else
{
[
OldPhobos
track
:
eventId
];
}
}
+
(
void
)
track
:
(
NSString
*
)
eventId
attributes
:
(
NSDictionary
*
)
attributes
currentAPI
:
(
NSString
*
)
currentAPI
{
if
(
isGray
)
{
[
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
{
if
(
isGray
)
{
[
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
{
if
(
isGray
)
{
[
NewPhobos
track
:
eventId
currentAPI
:
currentAPI
];
}
else
{
[
OldPhobos
track
:
eventId
currentAPI
:
currentAPI
];
}
}
/**
* @brief PV事件开始。当controller viewWillAppear时调用
*/
-
(
void
)
onPVStart
:
(
UIResponder
<
PhobosPVProtocol
>
*
)
page
{
[
_rePhobos
onPVStart
:
page
];
[
_oldPhobos
onPVStart
:
page
];
}
/**
* @brief PV事件结束。当controller viewWillDisAppear时调用
*/
-
(
void
)
onPVEnd
:
(
UIResponder
<
PhobosPVProtocol
>
*
)
page
{
[
_rePhobos
onPVEnd
:
page
];
[
_oldPhobos
onPVEnd
:
page
];
}
/**
* 为隐私弹窗触发on_app_session_over埋点使用
*/
-
(
void
)
handleAppInBackgound
{
if
(
isGray
)
{
[
_rePhobos
handleAppInBackgound
];
}
else
{
[
_oldPhobos
handleAppInBackgound
];
}
}
-
(
void
)
setCaptureNullExpection
:
(
void
(
^
)(
NSString
*
_Nonnull
,
NSDictionary
*
_Nonnull
))
captureNullExpection
{
_captureNullExpection
=
captureNullExpection
;
_rePhobos
.
captureNullExpection
=
captureNullExpection
;
_oldPhobos
.
captureNullExpection
=
captureNullExpection
;
}
-
(
void
)
setNetStatus
:
(
NSString
*
)
netStatus
{
_netStatus
=
netStatus
;
_rePhobos
.
netStatus
=
netStatus
;
_oldPhobos
.
netStatus
=
netStatus
;
}
-
(
void
)
setNetworkStatus
:
(
NSString
*
)
networkStatus
{
_networkStatus
=
networkStatus
;
_rePhobos
.
networkStatus
=
networkStatus
;
_oldPhobos
.
networkStatus
=
networkStatus
;
}
-
(
void
)
setLogEnabled
:
(
BOOL
)
logEnabled
{
_logEnabled
=
logEnabled
;
_rePhobos
.
logEnabled
=
logEnabled
;
_oldPhobos
.
logEnabled
=
logEnabled
;
}
-
(
void
)
setUserId
:
(
NSString
*
)
userId
{
_userId
=
userId
;
_rePhobos
.
userId
=
userId
;
_oldPhobos
.
userId
=
userId
;
}
-
(
void
)
setCurrentCityId
:
(
NSString
*
)
currentCityId
{
_currentCityId
=
currentCityId
;
_rePhobos
.
currentCityId
=
currentCityId
;
_oldPhobos
.
currentCityId
=
currentCityId
;
}
-
(
void
)
setGps
:
(
CLLocation
*
)
gps
{
_gps
=
gps
;
_rePhobos
.
gps
=
gps
;
_oldPhobos
.
gps
=
gps
;
}
-
(
void
)
setUserType
:
(
NSMutableDictionary
*
)
userType
{
_userType
=
userType
;
_rePhobos
.
userType
=
userType
;
_oldPhobos
.
userType
=
userType
;
}
-
(
void
)
setApiHost
:
(
NSString
*
)
apiHost
{
_apiHost
=
apiHost
;
_rePhobos
.
apiHost
=
apiHost
;
_oldPhobos
.
apiHost
=
apiHost
;
}
-
(
void
)
setServerAPI
:
(
NSString
*
)
serverAPI
{
_serverAPI
=
serverAPI
;
_rePhobos
.
serverAPI
=
serverAPI
;
_oldPhobos
.
serverAPI
=
serverAPI
;
}
-
(
void
)
setCookie
:
(
NSString
*
)
cookie
{
_cookie
=
cookie
;
_rePhobos
.
cookie
=
cookie
;
_oldPhobos
.
cookie
=
cookie
;
}
-
(
void
)
setGreyType
:
(
NSString
*
)
greyType
{
_greyType
=
greyType
;
_rePhobos
.
greyType
=
greyType
;
_oldPhobos
.
greyType
=
greyType
;
}
-
(
void
)
setSigningType
:
(
PhobosSigningType
)
signingType
{
_signingType
=
signingType
;
_rePhobos
.
signingType
=
signingType
;
_oldPhobos
.
signingType
=
signingType
;
}
-
(
void
)
setGetTopController
:
(
UIViewController
*
_Nonnull
(
^
)(
void
))
getTopController
{
_getTopController
=
getTopController
;
_rePhobos
.
getTopController
=
getTopController
;
_oldPhobos
.
getTopController
=
getTopController
;
}
-
(
void
)
setWk_ua
:
(
NSString
*
)
wk_ua
{
_wk_ua
=
wk_ua
;
_rePhobos
.
wk_ua
=
wk_ua
;
}
@end
...
...
GMPhobos/Classes/PhobosConfig.h
View file @
848180b3
...
...
@@ -24,8 +24,6 @@ static NSString *sdkVersion = @"2.0.5";
#define phobosLog(...)
#endif
#define PhobosGray @"PhobosGray"
#define PhobosBeginTime @"PhobosBeginTime" //记录APP打开|从后台启动时的时间戳
#define PhobosEndTime @"PhobosEndTime" //记录APP退出|退到后台时的时间戳
#define PhobosCacheKey @"PhobosCacheKey" //old 存放持久化埋点数据的key
...
...
GMPhobos/Classes/PhobosDevice.h
View file @
848180b3
...
...
@@ -6,14 +6,14 @@
//
#import <Foundation/Foundation.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/ASIdentifierManager.h>
NS_ASSUME_NONNULL_BEGIN
extern
NSString
*
const
KprivatePolicyNotification
;
typedef
void
(
^
PhobosGetIDFACompleteBlock
)(
NS
Dictionary
*
dict
);
typedef
void
(
^
PhobosGetIDFACompleteBlock
)(
NS
String
*
idfa
,
NSInteger
authoriza
);
@interface
PhobosDevice
:
NSObject
...
...
@@ -35,6 +35,10 @@ typedef void (^PhobosGetIDFACompleteBlock)(NSDictionary *dict);
/// 用户是否点击了隐私协议 点击同意之后才会获取 device_id
+
(
BOOL
)
showPrivatePolicy
;
/// 请求获取IDFA授权 (ios14 异步回调, ios14之前直接回调)
/// @param completeBlock 回调执行结果
+
(
void
)
requestTrackingAuthorizaWithCompletionHandler
:(
PhobosGetIDFACompleteBlock
)
completeBlock
;
@end
NS_ASSUME_NONNULL_END
GMPhobos/Classes/PhobosDevice.m
View file @
848180b3
...
...
@@ -10,7 +10,6 @@
#import <SAMKeychain/SAMKeychain.h>
#import <GMCache/GMCache.h>
#import "PhobosUtil.h"
//#import <AppTrackingTransparency/AppTrackingTransparency.h>
NSString
*
const
KprivatePolicyNotification
=
@"gm_popup_private_policy_notification"
;
//钥匙串账户
...
...
@@ -29,7 +28,7 @@ static dispatch_queue_t queue;
#pragma mark - getIDFA
/
/
同步获取IDFA 直接从钥匙串中获取 适配ATTrackingManagerAuthorization可使用下面方法
/
*
同步获取IDFA 直接从钥匙串中获取 适配ATTrackingManagerAuthorization可使用下面方法
+ (NSString *)getIDFA {
if (![PhobosDevice showPrivatePolicy]) {
return defaultIDFA;
...
...
@@ -47,58 +46,66 @@ static dispatch_queue_t queue;
keyChainIDFA = defaultIDFA;
}
return keyChainIDFA;
}
}
*/
/** iOS 14 适配 ATTrackingManagerAuthorizationStatus
/** iOS 14 适配 ATTrackingManagerAuthorizationStatus
*/
//同步获取IDFA 直接从钥匙串中获取
+
(
NSString
*
)
getIDFA
{
if
(
!
[
PhobosDevice
showPrivatePolicy
])
{
return
defaultIDFA
;
}
//直接从钥匙串中获取
NSString
*
keyChainIDFA
=
[
self
getKeyChainService
:
IDFA
account
:
keyChainAccount
];
//判断获取的钥匙串是否为空
if
([
self
checkIdfaIsNull
:
keyChainIDFA
])
{
if (@available(iOS 14, *)) {
// 如果是iOS14 未从钥匙串中获取到idfa直接按默认的
keyChainIDFA
=
defaultIDFA
;
} else {
keyChainIDFA = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
if ([self checkIdfaIsNull:keyChainIDFA]) {
[self saveKeyChainWithValue:keyChainIDFA service:IDFA account:keyChainAccount];
}
}
}
return
keyChainIDFA
;
}
//同步获取IDFA
+ (void)getIDFAString:(PhobosGetIDFACompleteBlock)completeBlock {
/// 请求获取IDFA授权
/// @param completeBlock 回调执行结果
+
(
void
)
requestTrackingAuthorizaWithCompletionHandler
:
(
PhobosGetIDFACompleteBlock
)
completeBlock
{
// iOS14及以上版本需要先请求权限
if
(
@available
(
iOS
14
,
*
))
{
__block NSString *idfaString = @"";
[
ATTrackingManager
requestTrackingAuthorizationWithCompletionHandler
:
^
(
ATTrackingManagerAuthorizationStatus
status
)
{
BOOL isAuthor = NO;
dispatch_async
(
dispatch_get_main_queue
(),
^
{
NSString
*
idfaString
;
if
(
status
==
ATTrackingManagerAuthorizationStatusAuthorized
)
{
isAuthor = YES;
idfaString
=
[[
ASIdentifierManager
sharedManager
]
advertisingIdentifier
].
UUIDString
;
}
if
(
!
[
self
checkIdfaIsNull
:
idfaString
])
{
[
self
saveKeyChainWithValue
:
idfaString
service
:
IDFA
account
:
keyChainAccount
];
}
completeBlock(@{@"idfa": idfaString, @"is_author": @(isAuthor)});
}
else
{
// NSLog(@"请在设置-隐私-跟踪中允许App请求跟踪");
}
if
(
completeBlock
)
{
completeBlock
(
idfaString
,
status
);
}
});
}];
}
else
{
// 使用原方式访问IDFA
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
BOOL isAuthor = NO;
// iOS14以下版本依然使用原方式访问IDFA
// 判断在设置-隐私里用户是否打开了广告跟踪
NSInteger
status
=
0
;
NSString
*
idfaString
;
if
([[
ASIdentifierManager
sharedManager
]
isAdvertisingTrackingEnabled
])
{
idfaString
=
[[[
ASIdentifierManager
sharedManager
]
advertisingIdentifier
]
UUIDString
];
if
(
!
[
self
checkIdfaIsNull
:
idfaString
])
{
isAuthor = YES;
// 标示 用户已授权打开
status
=
3
;
[
self
saveKeyChainWithValue
:
idfaString
service
:
IDFA
account
:
keyChainAccount
];
}
completeBlock(@{@"idfa": idfaString, @"is_author": @(isAuthor)});
}
else
{
// 表示用户拒绝打开
status
=
2
;
// NSLog(@"请在设置-隐私-广告中打开广告跟踪功能");
}
if
(
completeBlock
)
{
completeBlock
(
idfaString
,
status
);
}
}
}
*/
#pragma mark - 对IDFA判空处理
//检查idfa 是否为空
...
...
@@ -106,7 +113,6 @@ static dispatch_queue_t queue;
return
!
idfa
.
length
||
[
idfa
isEqualToString
:
defaultIDFA
];
}
#pragma mark - getIDFV
+
(
NSString
*
)
getIDFV
{
if
(
!
[
PhobosDevice
showPrivatePolicy
])
{
...
...
@@ -115,7 +121,6 @@ static dispatch_queue_t queue;
return
[[[
UIDevice
currentDevice
]
identifierForVendor
]
UUIDString
];
}
#pragma mark - getDEVICEID
+
(
NSString
*
)
getDEVICEID
{
if
(
!
[
PhobosDevice
showPrivatePolicy
])
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment