You need to enable JavaScript to run this app.
文档中心
增长分析 DataFinder

增长分析 DataFinder

复制全文
下载 pdf
iOS SDK
iOS SDK 集成场景实践
复制全文
下载 pdf
iOS SDK 集成场景实践

手动引入SDK说明

推荐您通过CocoaPods引入SDK。如特殊情况需要手动引入,可参考本章节内容进行手动引入。

  1. 请前往iOS SDK包下载页面获取对应版本的SDK包。

说明

iOS离线包名称为*版本号*.zip格式。例如:6.17.0.zip,其中6.17.0为SDK版本号。

  1. 将安装包下的文件复制到项目文件夹下,并在XCode中依次添加到项目中。添加依赖:
  • libz.tbd,离线集成必选依赖
  • libsqlite3.tbd,离线集成必选依赖
  • CoreGraphics.framework,离线集成必选依赖
  • Security.framework,离线集成必选依赖
  • SystemConfiguration.framework,离线集成必选依赖
  • JavaScriptCore.framework,离线集成必选依赖
  • WebKit.framework,离线集成必选依赖
  • CoreTelephony.framework ,离线集成必选依赖
  • AdSupport.framework,离线集成可选依赖,仅在引入 Unique 库时需要,该库仅在额外购买 Tracer 做归因业务时需要
  • AppTrackingTransparency.framework ,离线集成可选依赖,仅在引入 Unique 库时需要,该库仅在额外购买 Tracer 做归因业务时需要,且该依赖需 14+ 版本使用,请在引入依赖时做好配置

设置 Build Settings -> Header Search Paths 添加 Headers 文件夹路径:
Image
设置 Build Settings -> Linking -> Other Linker Flags 添加 -ObjC:
Image

初始化相关配置

全埋点设置开关

注意

全埋点开关默认开启。SDK中开启全埋点后,后续实际使用前,您还需在DataFinder控制台查看并确认全埋点的开关已打开。

  • SaaS-云原生和私有化场景:进入到项目中心>项目管理>SDK设置,确保全埋点开关已打开。
  • SaaS-非云原生场景:进入到「数据管理-圈选事件」页面中,将「全埋点数据采集」开关打开即可正常使用。

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

注意

国密 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

设置APP Language 和 APP Region

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采集

设备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

设置GPS坐标

引入 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 功能,开启该功能模块即开启采集剪切板信息,关闭则禁用剪切板采集。

说明

  • 关闭剪切板采集后,广告监测的Alink归因可能会受影响,关闭前请先确认下是否有使用广告监测相关功能。
  • iOS系统从16版本开始,获取剪切板信息会触发弹窗,因此如果您开启剪切板采集开关,当ALink功能在启动SDK时采集获取剪切板,会触发弹窗。建议您根据实际业务情况,评估获取剪切板的时机。

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

user_unique_id、用户属性相关

用户登录态设置

注意

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()

设置用户属性

profileSet

设置用户属性,存在则覆盖,不存在则创建。
Objective-C请参考:

// 示例:设置用户属性,属性名为key,属性值为value
NSDictionary *profileDict = @{@"key": @("value")};
[BDAutoTrack profileSet:profileDict];

Swift请参考:

// 示例:设置用户属性,属性名为key,属性值为value
let profileDict: [AnyHashable: Any] = [
    "key": "value"
]
BDAutoTrack.profileSet(profileDict)

profileSetOnce

设置用户属性,存在则不设置,不存在则创建,适合首次相关的用户属性,比如首次访问时间等。
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)

profileIncrement

设置数值类型的属性,可进行累加。
Objective-C请参考:

// 示例:设置用户属性,属性名为key,属性值为1
[BDAutoTrack profileIncrement:@{@"key": @(1)}];

Swift请参考:

// 示例:设置用户属性,属性名为key,属性值为1
let profileDict: [AnyHashable: Number] = [
    "key": 1
]
BDAutoTrack.profileIncrement(profileDict)

profileAppend

设置List类型的用户属性,可持续向List内添加。
Objective-C请参考:

// 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append
[BDAutoTrack profileAppend:@{
    @"key": @[@"value_append"]
}];

Swift请参考:

// 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append
BDAutoTrack.profileAppend([["key"]:["value_append"]])

profileUnset

删除用户的属性。
Objective-C请参考:

// 示例:删除用户属性,属性名为key
[BDAutoTrack profileUnset:@"key"];

Swift请参考:

// 示例:删除用户属性,属性名为key
BDAutoTrack.profileUnset("key")

获取平台ID与通知

获取平台生成ID

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)")
}

获取SDK版本号

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页

开启内嵌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;

原生端采集H5全埋点

原生端内嵌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对应一个单独的实例。使用场景例如:

  • 第三方SDK依赖增长营销套件SDK做SDK内部产生的埋点时;
  • 同一个App或系统中,关联多个埋点应用(多个appid),共用增长营销套件SDK时。

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测试

帮助评估不同版本的功能或界面对用户行为的影响。例如:比较两个不同界面布局的点击率,测试不同功能实现方式对用户使用率的影响。

问题诊断

帮助快速发现和定位应用中的问题。例如:用户在某个页面频繁退出或崩溃,某些功能的使用率突然下降。

运营活动效果评估

帮助评估各种运营活动的效果,例如促销活动、推送通知等。例如:某次推送通知的点击率和转化率,某个促销活动的参与度和效果。

全埋点能力支持

能力支持

能力说明

页面访问

  • UIViewController 生命周期
  • UITabBarController 切换
  • UIPageViewController 切换
  • UINavigationController 切换

点击

  • UIButton等触发的sendAction事件
  • UIAlertAction 点击事件
  • UITableViewCell、UICollectionView 点击事件
  • UIGestureRecognizer 点击、长按

曝光

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

说明

  • trackEventEnabled为事件上报总开关,默认YES。
  • 优先级:trackEventEnabled > autoTrackEnabled > H5AutoTrackEnabled

预置事件列表与上报逻辑

全埋点事件列表

事件说明

事件触发机制

bav2b_page

页面访问

页面打开后触发上报

$bav2b_page_leave

页面离开

离开页面后触发上报

bav2b_click

view 元素点击事件

点击页面元素后触发上报

其中:

  • bav2b_page:包含来源页面相关属性(refer_page_xx),当应用为冷启动时,此类属性值将为空,页面跳转后会在新页面填充来源页面信息。
  • $bav2b_page_leave:页面进入时记录一个以当页面为 key 的 duration 事件,记录当前进入时间。页面退出时取出 duration 事件,根据当前时间减去页面进入时间,中间差值为停留时间时长。

更多各预置事件的详细说明和相关的事件属性介绍请参见全埋点预置事件和属性

基于事件类型功能开关

注意

本小节功能于 6.11.0+ 版本起支持。
允许全埋点事件类型的配置,具体定义见 <BDCommonEnumDefine.h>

  • BDAutoTrackDataTypePage - 页面浏览事件
  • BDAutoTrackDataTypeClick - 用户点击事件
  • BDAutoTrackDataTypePageLeave - 页面浏览结束事件

Objective-C 请参考:

config.autoTrackEventType = BDAutoTrackDataTypeAll;

Swift 请参考:

config.autoTrackEventType = BDAutoTrackDataType.all

DataFinder控制台开启

SDK中开启全埋点后,后续实际使用前,您还需在DataFinder控制台查看并确认全埋点的开关已打开。

  • SaaS-云原生和私有化场景:进入到项目中心>项目管理>SDK设置,确保全埋点开关已打开。
  • SaaS-非云原生场景:进入到「数据管理-圈选事件」页面中,将「全埋点数据采集」开关打开即可正常使用。

自定义页面浏览事件属性

注意

请在 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;

自定义点击事件属性

通过 UIViewUIBarButtonItem 扩展 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

如需使用实时埋点检测圈选事件,请配置Scheme,否则可跳过此步骤。

获取URL Scheme

「应用列表」-> 接入应用的「详情」->「URL Scheme」中可查看您的scheme,一般为rangersapplog.xxxxx的形式。
Image

添加URL Scheme

把URL Scheme添加到您的项目中。
Image

重写回调方法

请根据需要使用实时埋点检测或圈选事件功能的设备版本,并添加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
}
最近更新时间:2025.09.11 17:51:44
这个页面对您有帮助吗?
有用
有用
无用
无用