推荐您通过CocoaPods引入SDK。如特殊情况需要手动引入,可参考本章节内容进行手动引入。
说明
iOS离线包名称为*版本号*.zip格式。例如:6.17.0.zip,其中6.17.0为SDK版本号。
设置 Build Settings -> Header Search Paths 添加 Headers 文件夹路径:
设置 Build Settings -> Linking -> Other Linker Flags 添加 -ObjC:
注意
全埋点开关默认开启。SDK中开启全埋点后,后续实际使用前,您还需在DataFinder控制台查看并确认全埋点的开关已打开。
Objective-C请参考:
// 开启全埋点事件的上送 config.autoTrackEnabled = YES; // 全埋点开关,YES开启,NO关闭
Swift请参考:
// 开启全埋点事件的上送 config.autoTrackEnabled = true // 全埋点开关,true开启,false关闭
引入Picker子库即开启圈选埋点。相反,移除Picker子库即关闭圈选埋点。subspecs添加Picker
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... 'Picker' ]
注意
日志打印默认关闭,建议上线生产包关闭。
Objective-C请参考:
// 在控制台输出日志,可用于观察用户行为日志上报情况,建议在上线时关闭 config.showDebugLog = NO; // YES:开启日志,NO:关闭日志
Swift请参考:
// 在控制台输出日志,可用于观察用户行为日志上报情况,建议在上线时关闭 config.showDebugLog = false // true:开启日志,false:关闭日志
加密设置默认开启。您可在debug阶段关闭加密,以便于抓包联调。Objective-C请参考:
// 加密设置开关,线上版本建议开启 config.logNeedEncrypt = YES; // YES:打开加密,NO:关闭加密
Swift请参考:
// 加密设置开关,线上版本建议开启 config.logNeedEncrypt = true // true:打开加密,false:关闭加密
注意
国密 SM2 算法的请求加密仅私有化版本支持,支持的最低版本:6.15.0。
引入国密 SM2子库,subspecs添加Encryptor/SM2
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... 'Encryptor/SM2' #仅私有化版本支持 ]
Objective-C请参考:
#import "BDAutoTrackEncryptorSM2.h" // 设置 SM2 加密 NSString * const publicKey = @"your public key"; [BDAutoTrackEncryptorSM2 setPublickKey:publicKey]; config.encryptionType = BDAutoTrackEncryptionTypeCstcSM2;
Swift请参考:
// 设置 SM2 加密 let publicKey = "your public key" BDAutoTrackEncryptorSM2.setPublickKey(publicKey) config.encryptionType = .cstcSM2
Objective-C请参考:
// 修改语言和地区,设置APP Language 和 APP Region [BDAutoTrack setAppLauguage:@"zh/en/jp/fr"]; [BDAutoTrack setAppRegion:@"cn"];
Swift请参考:
// 修改语言和地区,设置APP Language 和 APP Region BDAutoTrack.setAppLauguage("zh/en/jp/fr") BDAutoTrack.setAppRegion("cn")
设备IDFA的采集通过Unique子库完成。引入Unique子库即开启采集,移除Unique子库即关闭采集。
说明
SaaS-云原生和私有化4.4.0版本以上也支持在DataFinder控制台关闭敏感字段采集,您可以在项目管理>SDK设置中关闭IDFA字段采集,详情请参见项目管理-SDK设置。
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... # 'Unique', # 移除这个Unique就可以关闭IDFA采集 ]
注意
本小节功能在6.11.0+后开始支持。
引入 DeviceOrientation 子库。subspecs添加DeviceOrientation
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... 'DeviceOrientation' #屏幕方向采集 ]
屏幕方向信息会自动带入每个埋点的params中,接口文档如下:
/*! @abstract 是否采集屏幕方向,默认不采集(NO) */ @property (nonatomic) BOOL screenOrientationEnabled;
Objective-C请参考:
config.screenOrientationEnabled = YES;
Swift请参考:
config.screenOrientationEnabled = true
引入 Location 子库。subspecs添加Location
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... 'Location' # GPS采集 ]
GPS 信息会自动带入每个埋点的 params 中:
/*! @abstract 是否采集GPS,默认不采集(NO) */ @property (nonatomic) BOOL trackGPSLocationEnabled;
Objective-C 请参考:
config.trackGPSLocationEnabled = YES;
Swift 请参考:
config.trackGPSLocationEnabled = true
您也可以自行手动设置GPS,手动设置后,SDK将不再使用自动采集的GPS信息:
@interface BDAutoTrack ... + (void)setGPSLocation:(enum BDAutoTrackGeoCoordinateSystem)geoCoordinateSystem longitude:(double)longitude latitude:(double)latitude; ... @end // WGS84 地球坐标系 // GCJ02 火星坐标系 // BD09 百度坐标系 // BDCS 北斗坐标系 typedef NS_ENUM(NSInteger, BDAutoTrackGeoCoordinateSystem) { BDAutoTrackGeoCoordinateSystemWGS84 = 1 << 0, BDAutoTrackGeoCoordinateSystemGCJ02 = 1 << 1, BDAutoTrackGeoCoordinateSystemBD09 = 1 << 2, BDAutoTrackGeoCoordinateSystemBDCS = 1 << 3 };
Objective-C 请参考:
[BDAutoTrack setGPSLocation:BDAutoTrackGeoCoordinateSystemWGS84 longitude:116.3683244 latitude:39.915085];
Swift 请参考:
BDAutoTrack.setGPSLocation(BDAutoTrackGeoCoordinateSystem.WGS84, longitude: 116.3683244, latitude: 39.915085)
引入 Exception 子库。subspecs添加Exception
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... 'Exception' #崩溃采集 ]
Objective-C 请参考:
// 目前仅支持采集 NSException 崩溃 config.trackCrashEnabled = YES;
Swift 请参考:
// 目前仅支持采集 NSException 崩溃 config.trackCrashEnabled = true
剪切板采集用于广告监测产品的 ALink 功能,开启该功能模块即开启采集剪切板信息,关闭则禁用剪切板采集。
说明
Objective-C 请参考:
//开启 DeferredALink 功能 //关闭该功能则不会对剪切板信息进行采集 config.enableDeferredALink = NO;
Swift 请参考:
//开启 DeferredALink 功能 //关闭该功能则不会对剪切板信息进行采集 config.enableDeferredALink = false;
用户行为日志采用事件event+属性params的形式,事件一般对应多个属性,也可以仅有事件没有属性。代码埋点方案一般由数据分析师或产品运营设计。
仅上报事件的代码埋点,示例如下:Objective-C请参考:
// 示例:上报事件event,该事件不包含属性 // 置于业务逻辑对应位置 [BDAutoTrack eventV3:@"event" params:nil];
Swift请参考:
// 示例:上报事件event,该事件不包含属性 // 置于业务逻辑对应位置 BDAutoTrack.eventV3("event", params: nil)
上报事件和对应属性的代码埋点,示例如下:Objective-C请参考:
// 示例:上报事件event,该事件包含两个属性 // 一个string类型的属性,属性名为key_string,属性值为value_string //. 一个int类型的属性,属性名为key_int,属性值为10 // 置于业务逻辑对应位置 [BDAutoTrack eventV3:@"event" params:@{@"key_string":@"value_string", @"key_int": @(10)}];
Swift请参考:
// 示例:上报事件event,该事件包含两个属性 // 一个string类型的属性,属性名为key_string,属性值为value_string //. 一个int类型的属性,属性名为key_int,属性值为10 // 置于业务逻辑对应位置 BDAutoTrack.eventV3("event", params: ["key_string": "value_string", "key_int": 10])
如需在每个事件中都包括某属性,可通过公共属性设置,无需在每个事件中重复设置。公共属性只需设置一次,即可包括在所有代码埋点事件、预置事件和全埋点事件中。
公共属性存储逻辑非持久化,请在在有需要时设置。
Objective-C请参考:
/* * 示例:设置自定义的公共属性,属性名为key_public,属性值为value_public * 关于自定义 “公共属性” 请注意: * 1. 上报机制是随着每一次日志发送进行提交,默认的日志发送频率是1分钟, * 所以如果在一分钟内连续修改自定义公共属性,按照日志发送前的最后一次修改为准; * 2. 不推荐高频次修改,如每秒修改一次。 */ [BDAutoTrack setCustomHeaderValue:@"value_public" forKey:@"key_public"];
Swift请参考:
/* * 示例:设置自定义的公共属性,属性名为key_public,属性值为value_public * 关于自定义 “公共属性” 请注意: * 1. 上报机制是随着每一次日志发送进行提交,默认的日志发送频率是1分钟, * 所以如果在一分钟内连续修改自定义公共属性,按照日志发送前的最后一次修改为准; * 2. 不推荐高频次修改,如每秒修改一次。 */ BDAutoTrack.setCustomHeaderValue { () -> [String : Any] in return ["key_public":"value_public"] }
Objective-C请参考:
// 示例:移除属性名为key_public的公共属性 [BDAutoTrack removeCustomHeaderValueForKey:@"key_public"];
Swift请参考:
// 示例:移除属性名为key_public的公共属性 BDAutoTrack.removeCustomHeaderValueForKey("key_public");
SDK 默认采集以下信息,并作为用户公共属性,可在增长分析(DataFinder)中分组和筛选。
字段名称 | 字段类型 | 参数名称 |
|---|---|---|
os | string | 设备系统,对应产品内属性为 os_name。 |
os_version | string | 操作系统版本 |
app_version | string | App 版本 |
app_version_minor | string | 次版本号,App四位版本号,设置[OKApplicationInfo sharedInstance].buildVersion = @"1.2.3.4"; |
channel | string | 下载渠道(设置后可覆盖),对应产品内属性为 app_channel。 |
device_model | string | 设备型号 |
region | string | 操作系统国家 |
language | string | 系统语言 |
sdk_version | string | SDK版本 |
timezone | int | 时区 例如 8 |
tz_offset | int | 时区偏移量,对应产品内属性为 tz_offset,例如 28800。 |
tz_name | string | 时区名称,例如 Asia/Shanghai。 |
carrier | string | 运营商 |
resolution | string | 分辨率 |
device_brand | string | 设备品牌 |
access | string |
注意
6.13.0 之后的版本允许在 startTrack 之前调用,用于设置初始化的登录态。
6.13.0 之前的版本只有在 SDK 启动完成之后调用生效。
如您的产品中有账户体系,请在用户登录后立即设置uuid,以保证用户登录前后口径一致性。Objective-C请参考:
#import <RangersAppLog/RangersAppLog.h> // 设置您账号体系的ID, 并保证其唯一性 [BDAutoTrack setCurrentUserUniqueID:@"{{USER_UNIQUE_ID}}"];
Swift请参考:
BDAutoTrack.setCurrentUserUniqueID("{{USER_UNIQUE_ID}}")
在账户登出时调用。Objective-C请参考:
[BDAutoTrack clearUserUniqueID];
Swift请参考:
BDAutoTrack.clearUserUniqueID()
设置用户属性,存在则覆盖,不存在则创建。Objective-C请参考:
// 示例:设置用户属性,属性名为key,属性值为value NSDictionary *profileDict = @{@"key": @("value")}; [BDAutoTrack profileSet:profileDict];
Swift请参考:
// 示例:设置用户属性,属性名为key,属性值为value let profileDict: [AnyHashable: Any] = [ "key": "value" ] BDAutoTrack.profileSet(profileDict)
设置用户属性,存在则不设置,不存在则创建,适合首次相关的用户属性,比如首次访问时间等。Objective-C请参考:
// 示例:设置用户属性,属性名为key_once,属性值为value_once NSDictionary *profileDict = @{@"key_once": @("value_once")}; [BDAutoTrack profileSetOnce:profileDict];
Swift请参考:
// 示例:设置用户属性,属性名为key_once,属性值为value_once let profileDict: [AnyHashable: Any] = [ "key_once": "value_once" ] BDAutoTrack.profileSetOnce(profileDict)
设置数值类型的属性,可进行累加。Objective-C请参考:
// 示例:设置用户属性,属性名为key,属性值为1 [BDAutoTrack profileIncrement:@{@"key": @(1)}];
Swift请参考:
// 示例:设置用户属性,属性名为key,属性值为1 let profileDict: [AnyHashable: Number] = [ "key": 1 ] BDAutoTrack.profileIncrement(profileDict)
设置List类型的用户属性,可持续向List内添加。Objective-C请参考:
// 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append [BDAutoTrack profileAppend:@{ @"key": @[@"value_append"] }];
Swift请参考:
// 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append BDAutoTrack.profileAppend([["key"]:["value_append"]])
删除用户的属性。Objective-C请参考:
// 示例:删除用户属性,属性名为key [BDAutoTrack profileUnset:@"key"];
Swift请参考:
// 示例:删除用户属性,属性名为key BDAutoTrack.profileUnset("key")
Objective-C请参考:
#import <RangersApplog/BDAutoTrackNotifications.h> // 在初始化 SDK 之前设置监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onRegisterSuccess:) name:BDAutoTrackNotificationRegisterSuccess object:nil]; //SDK 初始化代码部分 //然后在 SDK 初始化之后设置回调 - (void)onRegisterSuccess:(NSNotification *)noti { NSString *dids = [noti.userInfo objectForKey:kBDAutoTrackNotificationRangersDeviceID]; NSString *ssids = [noti.userInfo objectForKey:kBDAutoTrackNotificationSSID]; NSLog(@"onRegisterSuccess.dids:%@", dids); // 获取设备bddid NSLog(@"onRegisterSuccess.ssids:%@", ssids); // 获取SSID }
Swift请参考:
NotificationCenter.default.addObserver(self, selector: #selector(onRegisterSuccess), name: NSNotification.Name(rawValue: BDAutoTrackNotificationRegisterSuccess), object: nil) func onRegisterSuccess(noti: Notification) { let did = noti.userInfo[kBDAutoTrackNotificationRangersDeviceID] let ssid = noti.userInfo[kBDAutoTrackNotificationSSID] print("onRegisterSuccess.dids:\(did)") print("onRegisterSuccess.ssids:\(ssid)") }
Objective-C请参考:
// SDK版本号格式为X.X.X [BDAutoTrack SDKVersion];
Swift请参考:
BDAutoTrack.sdkVersion()
SDK提供方法用以获取各类通知。各通知在BDAutoTrackNotifications.h头文件中均有描述。
// SDK 注册成功通知 BDAutoTrackNotificationRegisterSuccess // SDK 注册请求失败通知 BDAutoTrackNotificationRegisterFailure // 激活成功通知 BDAutoTrackNotificationActiveSuccess // SDK ABTest配置拉取成功通知 BDAutoTrackNotificationABTestSuccess // SDK ABTestVid发生变化时候的通知 BDAutoTrackNotificationABTestVidsChanged
开启内嵌H5页打通后,内嵌H5页上产生的事件将通过iOS SDK上报,不在js SDK上报,并复用iOS端设置的user_unique_id和公共属性,但是也支持打通时 web 侧设置 / 更新端上的 uuid(如需支持打通从 web 侧更新多口径,需使用新版本 SDK)/ 公共属性。
请注意,打通功能还需在H5页上集成js SDK,并开启js的打通开关,请参考 Web/JS SDK 集成 3.4节。打通后默认屏蔽 H5 全埋点功能,如还想采集 H5 全埋点,需要查看 4.7 小节:原生端采集 H5 全埋点。Objective-C请参考:
// 开启内嵌H5打通开关 config.enableH5Bridge = YES;
Swift请参考:
// 开启内嵌H5打通开关 config.enableH5Bridge = true;
开关开启后,必须配置打通白名单。仅白名单内配置的域名生效打通,白名单可用通配符方式添加,*表示通配符。Objective-C请参考:
// 内嵌H5页白名单配置 // 示例:如需打通 www.volcengine.com 和 www.bytedance.com 两个H5页 config.H5BridgeAllowedDomainPatterns = @[@"www.volcengine.com",@"*.bytedance.*"]; // 适配 www.bytedance.com 的白名单有多种,请根据业务场景配置白名单,例如: // www.bytedance.com 或 *.bytedance.* 或 *.*.* 均可实现。
Swift请参考:
// 内嵌H5页白名单配置 // 示例:如需打通 www.volcengine.com 和 www.bytedance.com 两个H5页 config.h5BridgeAllowedDomainPatterns = ["www.volcengine.com", "*.bytedance.*"]
打通时默认用的是端内 SDK 用户信息,但也支持 H5 侧通过 Web SDK 更新端内 SDK 用户信息。
iOS 6.17.2 版本新增禁止打通内嵌 H5 页时禁止 H5 更新 App 内用户信息,以避免 H5 多处使用时更新用户信息相关代码不好移除,从而打通时破坏端内 SDK 原本的用户信息。
// 默认开启,支持关闭 config.useBridgeUpdateUUIDEnabled = YES;
原生端内嵌webview页时,通过打开以下开关,可从原生端全埋点事件采集h5页全埋点事件。
注意
此开关的使用无需在h5页内集成JS SDK,且与JS SDK全埋点功能独立无关联。
Objective-C请参考:
//内嵌H5页面的全埋点事件 config.H5AutoTrackEnabled = YES; // YES:开启h5全埋点事件,NO:关闭h5全埋点事件
Swift请参考:
//内嵌H5页面的全埋点事件 config.H5AutoTrackEnabled = true; // true:开启h5全埋点事件,false:关闭h5全埋点事件
多实例初始化,指SDK支持在同包名的App中向多个应用(多个appid)开启埋点,且埋点数据相互隔离,每一个appid对应一个单独的实例。使用场景例如:
Objective-C请参考:
BDAutoTrackConfig* config1 = [BDAutoTrackConfig configWithAppID:@"{{APPID_1}}" launchOptions:launchOptions]; BDAutoTrack *track1 = [BDAutoTrack trackWithConfig:config1]; [track1 startTrack]; BDAutoTrackConfig* config2 = [BDAutoTrackConfig configWithAppID:@"{{APPID_2}}" launchOptions:launchOptions]; BDAutoTrack *track2 = [BDAutoTrack trackWithConfig:config2]; [track2 startTrack];
Swift请参考:
let config1 = BDAutoTrackConfig.init(appID: "{{APPID_1}}", launchOptions: launchOptions) let tracker1 = BDAutoTrack.init(config: config1); tracker1!.start() let config2 = BDAutoTrackConfig.init(appID: "{{APPID_2}}", launchOptions: launchOptions) let tracker2 = BDAutoTrack.init(config: config2); tracker2!.start()
开启全埋点事件采集开关后,会默认采集页面事件和 View 点击事件等。
应用场景
典型场景 | 场景说明 |
|---|---|
用户行为分析 | 了解用户在应用中的行为路径,例如:用户点击了哪些按钮,用户浏览了哪些页面,用户在特定页面停留的时间。 |
A/B测试 | 帮助评估不同版本的功能或界面对用户行为的影响。例如:比较两个不同界面布局的点击率,测试不同功能实现方式对用户使用率的影响。 |
问题诊断 | 帮助快速发现和定位应用中的问题。例如:用户在某个页面频繁退出或崩溃,某些功能的使用率突然下降。 |
运营活动效果评估 | 帮助评估各种运营活动的效果,例如促销活动、推送通知等。例如:某次推送通知的点击率和转化率,某个促销活动的参与度和效果。 |
全埋点能力支持
能力支持 | 能力说明 |
|---|---|
页面访问 |
|
点击 |
|
曝光 | UIView及子类曝光 |
全埋点预置事件列表与上报机制
全埋点事件列表 | 事件说明 | 事件触发机制 |
|---|---|---|
bav2b_page | 页面浏览事件 | |
$bav2b_page_leave | 页面离开 | |
bav2b_click | 元素点击事件 | |
bav2b_beat | 页面心跳事件 | |
$bav2b_slide | 滑动事件 |
各预置事件的详细说明和相关的事件属性介绍请参见下文。
您可以根据集成方式的差异,在项目中引入对应的 subspec 模块或者静态库文件来打开全埋点开关。Objective-C 请参考:
// 开启全埋点采集,默认为YES config.autoTrackEnabled = YES; // 开启WebView全埋点采集,默认为YES config.H5AutoTrackEnabled = YES;
Swift 请参考:
config.autoTrackEnabled = true config.H5AutoTrackEnabled = true
说明
全埋点事件列表 | 事件说明 | 事件触发机制 |
|---|---|---|
bav2b_page | 页面访问 | 页面打开后触发上报 |
$bav2b_page_leave | 页面离开 | 离开页面后触发上报 |
bav2b_click | view 元素点击事件 | 点击页面元素后触发上报 |
其中:
更多各预置事件的详细说明和相关的事件属性介绍请参见全埋点预置事件和属性。
注意
本小节功能于 6.11.0+ 版本起支持。
允许全埋点事件类型的配置,具体定义见 <BDCommonEnumDefine.h>。
Objective-C 请参考:
config.autoTrackEventType = BDAutoTrackDataTypeAll;
Swift 请参考:
config.autoTrackEventType = BDAutoTrackDataType.all
SDK中开启全埋点后,后续实际使用前,您还需在DataFinder控制台查看并确认全埋点的开关已打开。
注意
请在 init 方法中设置参数值,否则首次触发页面浏览事件时,参数值可能为空。
通过 UIViewController 扩展 API 自定义页面浏览事件的参数。
/*! @abstract 手动设置的PageTitle @discussion 如果设置,页面切换的时候会采集 @discussion 如果设置,该VC里面的View被点击的时候会采集 */ @property (nonatomic, copy) NSString *bdAutoTrackPageTitle; /*! @abstract 手动设置的PageID @discussion 如果设置,页面切换的时候会采集 @discussion 如果设置,该VC里面的View被点击的时候会采集 */ @property (nonatomic, copy) NSString *bdAutoTrackPageID; /*! @abstract 手动设置的PagePath @discussion 如果设置,页面切换的时候会采集 @discussion 如果设置,该VC里面的View被点击的时候会采集 */ @property (nonatomic, copy) NSString *bdAutoTrackPagePath; /*! @abstract 手动设置的extra信息 @discussion 如果设置,页面切换的时候会采集 @discussion 如果设置,该VC里面的View被点击的时候会采集 */ @property (nonatomic, copy) NSDictionary<NSString*, NSString *> *bdAutoTrackExtraInfos; /*! @abstract 自定义采集属性,相同 key 会覆盖默认采集的 params @discussion 如果设置,页面切换的时候会采集 @discussion 如果设置,该VC里面的View被点击的时候会采集 */ @property (nonatomic, copy) NSDictionary<NSString*, NSObject *> *bdAutoTrackPageProperties;
通过 UIView、UIBarButtonItem 扩展 API 自定义点击事件的参数。
/*! @abstract 这个对应新增的 element_id 字段,bdAutoTrackViewID 对应的是 element_manual_key 字段 @discussion 如果设置,被点击的时候会采集 */ @property (nonatomic, copy) NSString *bdAutoTrackElementID; /*! @abstract 手动设置的ViewID @discussion 如果设置,被点击的时候会采集,可以唯一标志该View */ @property (nonatomic, copy) NSString *bdAutoTrackViewID; /*! @abstract 手动设置的ViewContent @discussion如果设置,被点击的时候会采集 */ @property (nonatomic, copy) NSString *bdAutoTrackViewContent; /*! @abstract 手动设置的extra信息 @discussion 如果设置,被点击的时候会采集 */ @property (nonatomic, copy) NSDictionary<NSString*, NSString *> *bdAutoTrackExtraInfos; /*! @abstract 自定义采集属性,相同 key 会覆盖默认采集的 params @discussion 如果设置,被点击的时候会采集 */ @property (nonatomic, copy) NSDictionary<NSString*, NSObject *> *bdAutoTrackViewProperties; /*! @abstract 自定义采集开发 @discussion 如果设置 YES,被点击的时候埋点会被忽略 */ @property (nonatomic, assign) BOOL bdAutoTrackIgnoreClick;
/*! @abstract 忽略UIViewController中自动采集的浏览埋点 @discussion 忽略范围作用域为自身类,并不影响继承关系,例如 BViewController 继承于 AViewController, 如果都忽略需要传入@[[AViewController class],[BViewController class]] @param controllerClasses 传入需要忽略的类名 @[[TestViewController class], [UserViewController class]] */ - (void)ignoreAutoTrackPage:(NSArray<Class> *)controllerClasses;
Objective-C 请参考:
[[BDAutoTrack sharedTrack] ignoreAutoTrackPage:@[YOUR_ViewController.class]];
Swift 请参考:
BDAutoTrack.shared().ignorePage([YOUR_ViewController.classForCoder()])
/*! @abstract 忽略控件中自动采集的点击埋点 @discussion 忽略范围作用域为自身类 @param viewClasses 传入需要忽略的类名 @[[AButton class], [ALabel class]] */ - (void)ignoreAutoTrackClick:(NSArray<Class> *)viewClasses;
Objective-C 请参考:
[[BDAutoTrack sharedTrack] ignoreAutoTrackClick:@[YOUR_VIEW.class]];
Swift 请参考:
BDAutoTrack.shared().ignoreClick([YOUR_VIEW.classForCoder()])
/*! * @abstract 代码触发页面浏览埋点上报 * @param controller 可以传递 UIViewController 以及实现了 BDAutoTrackable协议的对象 * @result 是否成功 */ - (BOOL)trackPage:(id<BDAutoTrackable>)controller; /*! * @abstract 代码触发页面浏览埋点上报 * @param controller 可以传递 UIViewController * @param params 用户自定义参数,进行 [NSJSONSerialization isValidJSONObject:] 验证 * @result 是否成功 */ - (BOOL)trackPage:(id)controller withParameters:(nullable NSDictionary<NSString *,id> *)params;
Objective-C请参考:
[[BDAutoTrack sharedTrack] trackPage:YOUR_VIEWCONTROLLER_INSTANCE];
Swift请参考:
BDAutoTrack.shared().trackPage(YOUR_VIEWCONTROLLER_INSTANCE)
/*! * @abstract 代码触发点击埋点上报 * @param view 可以传递 UIView 等控件对象 以及实现了 BDAutoTrackable协议的对象 * @result 是否成功 */ - (BOOL)trackClick:(id<BDAutoTrackable>)view; /*! * @abstract 代码触发点击埋点上报 * @param view 可以传递 UIView 等控件对象 以及实现了 BDAutoTrackable协议的对象 * @param params 用户自定义参数,进行 [NSJSONSerialization isValidJSONObject:] 验证 * @result 是否成功 */ - (BOOL)trackClick:(id<BDAutoTrackable>)view withParameters:(nullable NSDictionary<NSString *,id> *)params;
Objective-C请参考:
[[BDAutoTrack sharedTrack] trackClick:YOUR_COMPONENT];
Swift 请参考:
BDAutoTrack.shared().trackClick(YOUR_COMPONENT)
注意
本小节功能在6.10.2+后开始支持。
带有时间属性的事件可以使用时长事件采集接口,例如采集视频播放时长事件等。
// 在视频开始播放时调用 [[BDAutoTrack sharedTrack] startDurationEvent:@"play"]; // 在视频暂停播放时调用 [[BDAutoTrack sharedTrack] pauseDurationEvent:@"play"]; // 在视频继续播放时调用 [[BDAutoTrack sharedTrack] resumeDurationEvent:@"play"]; // 在结束播放时调用,此时会上报一个play事件,且带有$event_duration属性(记录了播放时长,单位毫秒) [[BDAutoTrack sharedTrack] stopDurationEvent:@"play" properties:@{@"moive_name":@"xxx"}];
注意
本功能仅限SaaS云原生版本或私有化V4.4.0以上版本,且SDK6.15.0以上版本支持。
DataFinder支持通过服务端下发 SDK 设置,包括上报时机、全埋点开关等,详细介绍文档请查阅:项目管理-SDK设置。
如需使用实时埋点检测或圈选事件,请引入Log子库,subspecs添加Log。
请注意,除引入子库外,您还需要完成下文配置Scheme的步骤。
pod 'RangersAppLog', 'SDK-VERSION', :subspecs => [ # ... 'Log' # 实时埋点检测、圈选事件 ]
如需使用实时埋点检测或圈选事件,请配置Scheme,否则可跳过此步骤。
「应用列表」-> 接入应用的「详情」->「URL Scheme」中可查看您的scheme,一般为rangersapplog.xxxxx的形式。
把URL Scheme添加到您的项目中。
请根据需要使用实时埋点检测或圈选事件功能的设备版本,并添加URL的处理。
在AppDelegate回调里面添加 URL 的处理。
#import <RangersAppLog/BDAutoTrackSchemeHandler.h> - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { // 参数APPID if ([[BDAutoTrackSchemeHandler sharedHandler] handleURL:url appID:@"appid" scene:nil]) { return YES; } // …… return NO; }
在 iOS 13+ 版本中,使用 UISceneSession 需要在 UISceneDelegate 回调方法添加URL的处理。Objective-C请参考:
#import <RangersAppLog/BDAutoTrackSchemeHandler.h> - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts { for (UIOpenURLContext *context in URLContexts) { NSURL *URL = context.URL; // 参数APPID if ([[BDAutoTrackSchemeHandler sharedHandler] handleURL:URL appID:@"{{APPID}}" scene:scene]) { continue; } /// …… } }
Swift请参考:
import RangersAppLog func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { // 参数APPID if(BDAutoTrackSchemeHandler.shared().handle(url, appID: "{{APPID}}", scene: nil)) { return true } return false }