Skip to content

Commit

Permalink
Showing 39 changed files with 1,639 additions and 637 deletions.
10 changes: 1 addition & 9 deletions SensorsAnalyticsSDK.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "SensorsAnalyticsSDK"
s.version = "4.2.6"
s.version = "4.3.0"
s.summary = "The official iOS SDK of Sensors Analytics."
s.homepage = "http://www.sensorsdata.cn"
s.source = { :git => 'https://github.com/sensorsdata/sa-sdk-ios.git', :tag => "v#{s.version}" }
@@ -45,14 +45,6 @@ Pod::Spec.new do |s|
c.osx.dependency 'SensorsAnalyticsSDK/Common'
end

# 支持 CAID 渠道匹配
s.subspec 'CAID' do |f|
f.ios.deployment_target = '8.0'
f.dependency 'SensorsAnalyticsSDK/Core'
f.source_files = "SensorsAnalyticsSDK/CAID/**/*.{h,m}"
f.private_header_files = 'SensorsAnalyticsSDK/CAID/**/*.h'
end

# 全埋点
s.subspec 'AutoTrack' do |g|
g.ios.deployment_target = '8.0'
94 changes: 78 additions & 16 deletions SensorsAnalyticsSDK.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion SensorsAnalyticsSDK/AutoTrack/AppStart/SAAppStartTracker.m
Original file line number Diff line number Diff line change
@@ -71,7 +71,7 @@ - (void)autoTrackEventWithProperties:(NSDictionary *)properties {
eventProperties[kSAEventPropertyAppFirstStart] = self.isRelaunch ? @(NO) : @([self isFirstAppStart]);
eventProperties[kSAEventPropertyResumeFromBackground] = self.isRelaunch ? @(YES) : @(NO);
}
//添加 deeplink 相关渠道信息,可能不存在
//添加 deepLink 相关渠道信息,可能不存在
[eventProperties addEntriesFromDictionary:properties];

[self trackAutoTrackEventWithProperties:eventProperties];
Original file line number Diff line number Diff line change
@@ -138,7 +138,7 @@ - (NSDictionary *)buildWithViewController:(UIViewController *)viewController pro
[eventProperties addEntriesFromDictionary:autoTrackProperties];

if (autoTrack) {
// App 通过 Deeplink 启动时第一个页面浏览事件会添加 utms 属性
// App 通过 DeepLink 启动时第一个页面浏览事件会添加 utms 属性
// 只需要处理全埋点的页面浏览事件
[eventProperties addEntriesFromDictionary:SAModuleManager.sharedInstance.utmProperties];
[SAModuleManager.sharedInstance clearUtmProperties];
96 changes: 0 additions & 96 deletions SensorsAnalyticsSDK/CAID/SACAIDUtils.m

This file was deleted.

16 changes: 2 additions & 14 deletions SensorsAnalyticsSDK/ChannelMatch/SAChannelMatchManager.m
Original file line number Diff line number Diff line change
@@ -141,7 +141,7 @@ - (BOOL)isValidForChannelDebug {

/// 当前获取到的设备 ID 为有效值
- (BOOL)isValidOfDeviceInfo {
return ([SAIdentifier idfa].length > 0 || [self CAIDInfo].allKeys > 0);
return [SAIdentifier idfa].length > 0;
}

- (BOOL)isTrackedAppInstallWithDisableCallback:(BOOL)disableCallback {
@@ -217,7 +217,6 @@ - (NSDictionary *)profileProperties:(NSDictionary *)properties {

- (NSString *)appInstallSource {
NSMutableDictionary *sources = [NSMutableDictionary dictionary];
[sources addEntriesFromDictionary:[self CAIDInfo]];
sources[@"idfa"] = [SAIdentifier idfa];
sources[@"idfv"] = [SAIdentifier idfv];
NSMutableArray *result = [NSMutableArray array];
@@ -227,15 +226,6 @@ - (NSString *)appInstallSource {
return [result componentsJoinedByString:@"##"];
}

- (NSDictionary *)CAIDInfo {
Class cla = NSClassFromString(@"SACAIDUtils");
SEL sel = NSSelectorFromString(@"CAIDInfo");
if ([cla respondsToSelector:sel]) {
return ((NSDictionary * (*)(id, SEL))[cla methodForSelector:sel])(cla, sel);
}
return nil;
}

#pragma mark - 附加渠道信息
- (void)trackChannelWithEventObject:(SABaseEventObject *)obj properties:(nullable NSDictionary *)propertyDict {
if (self.configOptions.enableAutoAddChannelCallbackEvent) {
@@ -333,8 +323,6 @@ - (void)showRelinkAlertWithURL:(NSURL *)url {
NSMutableSet *deviceIdSet = [NSMutableSet setWithArray:[deviceId componentsSeparatedByString:@"##"]];
// 当前设备的设备信息
NSSet *installSourceSet = [NSSet setWithArray:[[self appInstallSource] componentsSeparatedByString:@"##"]];
// 当 IDFV 、IDFA caid、last_caid 都不一致,且只有 caid_version 一致时会出现匹配错误的情况
// 此场景在实际业务中出现概率较低,不考虑此问题
[deviceIdSet intersectSet:installSourceSet];
// 取交集,当交集不为空时,表示设备一致
if (deviceIdSet.count > 0) {
@@ -431,7 +419,7 @@ - (void)showChannelDebugInstall {
#pragma mark - Error Message
- (void)showChannelDebugErrorMessage {
NSString *title = @"检测到“设备码为空”,可能的原因如下,请排查:";
NSString *content = @"\n1. 手机系统设置中「隐私->广告-> 限制广告追踪」;\n\n2.若手机系统为 iOS 14 ,请联系研发人员确认 trackAppInstall 接口是否在 “跟踪” 授权之后调用。\n\n排查修复后,请重新扫码进行联调。\n\n3. 若集成了 CAID SDK,请联系研发人员确认 trackAppInstall 接口是否在 “getCAIDAsyncly” 授权之后调用。\n\n";
NSString *content = @"\n1. 手机系统设置中「隐私->广告-> 限制广告追踪」;\n\n2.若手机系统为 iOS 14 ,请联系研发人员确认 trackAppInstall 接口是否在 “跟踪” 授权之后调用。\n\n排查修复后,请重新扫码进行联调。\n\n";
SAAlertController *alertController = [[SAAlertController alloc] initWithTitle:title message:content preferredStyle:SAAlertControllerStyleAlert];
[alertController addActionWithTitle:@"确认" style:SAAlertActionStyleCancel handler:nil];
[alertController show];
29 changes: 18 additions & 11 deletions SensorsAnalyticsSDK/Core/Builder/SAIdentifier.h
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@
NS_ASSUME_NONNULL_BEGIN

extern NSString * const kSAIdentitiesLoginId;
extern NSString * const kSALoginIdSpliceKey;

@interface SAIdentifier : NSObject

@@ -38,17 +39,16 @@ extern NSString * const kSAIdentitiesLoginId;
/// ID-Mapping 3.0 业务 ID,当前所有处理逻辑都是在的 serialQueue 中处理
@property (nonatomic, copy, readonly) NSDictionary *identities;

/// 自定义的 loginIDKey
/// 自定义的 loginIDKey
@property (nonatomic, copy, readonly) NSString *loginIDKey;

/**
初始化方法
@param queue 一个全局队列
@param loginIDKey 自定义的 loginIDKey
@return 初始化对象
*/
- (instancetype)initWithQueue:(dispatch_queue_t)queue loginIDKey:(NSString *)loginIDKey;
- (instancetype)initWithQueue:(dispatch_queue_t)queue;

/**
自定义匿名 Id(设备 Id)
@@ -64,26 +64,30 @@ extern NSString * const kSAIdentitiesLoginId;
*/
- (void)resetAnonymousId;

#pragma mark - Login
/**
检查传入的 loginId 合法性
检查登录时参数的合法性
@param loginId 设置的 loginId
@param key 设置的 loginIDKey
@param value 设置的 loginId
@return 合法性结果
*/
- (BOOL)isValidLoginId:(NSString *)loginId;
- (BOOL)isValidForLogin:(NSString *)key value:(NSString *)value;

/**
通过登录接口设置 loginId
通过登录接口设置 loginIDKey 和 loginId
@param key 新的 loginIDKey
@param loginId 新的 loginId
*/
- (void)login:(NSString *)loginId;
- (void)loginWithKey:(NSString *)key loginId:(NSString *)loginId;

/**
通过退出登录接口删除本地的 loginId
*/
- (void)logout;

#pragma mark - Device ID
/**
获取设备的 IDFA
@@ -107,10 +111,13 @@ extern NSString * const kSAIdentitiesLoginId;

#pragma mark - Identities

/// 检查添业务 ID 是否有效,用于触发事件前判断
- (BOOL)isValidIdentity:(NSString *)key value:(NSString *)value;
/// 检查绑定业务 ID 是否有效,用于触发事件前判断
- (BOOL)isValidForBind:(NSString *)key value:(NSString *)value;

/// 绑定业务 ID,需要在 serialQueue 中调用,同时绑定多个 ID 时数据
/// 检查解绑业务 ID 是否有效,用于触发事件前判断
- (BOOL)isValidForUnbind:(NSString *)key value:(NSString *)value;

/// 绑定业务 ID,需要在 serialQueue 中调用
- (void)bindIdentity:(NSString *)key value:(NSString *)value;

/// 解绑业务 ID,需要在 serialQueue 中调用
Loading

0 comments on commit 8d3241e

Please sign in to comment.