You need to enable JavaScript to run this app.
导航
React Native SDK 集成
最近更新时间:2025.07.23 17:51:55首次发布时间:2025.06.30 18:49:46
复制全文
我的收藏
有用
有用
无用
无用

文档导读

下图为您概要介绍 SDK 集成相关文档的组织思路,您可参考以下导读示意图了解文档结构,查阅对应文档完成 集成操作。
Image

埋点规划

在进行 SDK 集成前,您需结合您的业务分析情况先进行埋点规划,明确出待分析的业务指标中可能需要埋点的事件有哪些、属性有哪些等。进行埋点规划时,您需了解一些基本概念和 DataFinder 为您预置提供的埋点事件和属性、DataFinder 的用户标识逻辑等前置信息,结合 DataFinder 为您提供的能力进行埋点规划。

基本概念

基本概念

概念说明

埋点规划与 SDK 集成要点

详细指导文档

事件、事件属性、事件公共属性、用户属性

DataFinder 的用户行为数据分析是基于事件+用户模型的分析模型。

  • 事件&事件属性:用户的某一种或一类行为称之为“事件”,事件属性即事件触发时同步采集的事件发生的形式、位置等用来描述事件的信息。例如,某个用户购买了某个商品,则该用户的行为事件为“购买”,事件属性为“商品名称”、“商品分类”、“支付金额”等。
  • 事件公共属性:指不与某个事件强关联、在多个或所有事件中都共同存在的不频繁变化的属性,例如,应用的版本号、设备信息等。
  • 用户&用户属性:用户指的是事件行为的发生主体人。用户属性指的是用户自身状态的属性(与行为无关,例如年龄、性别等)或与行为有关但不常变化的用户相关属性(如 VIP 等级、注册时间等)。

您需根据业务分析需要,规划好待采集的事件、事件属性、用户属性有哪些、类型是什么,进行 SDK 集成时

详细概念介绍请参见数据模型

埋点、全埋点、自定义埋点

  • 埋点:通过 SDK 的开发,将事件逻辑写入代码的过程,称之为埋点。DataFinder 为您提供了预置事件及事件属性,这类事件及事件属性无需您手动埋点,只需打开采集开关即可。
  • 全埋点:是 DataFinder 提供的预置事件和事件属性的一种,在 DataFinder 中,采集的全埋点事件为 bav2b_click 按钮点击, bav2b_page 页面浏览。不需要研发额外投入,但会以上报大量数据为代价,并且只可以采集简单的 PV、UV,对于丰富业务数据的采集显得有些‘力不从心’。
  • 代码埋点:代码埋点指的是开发工程师,按照业务个性化需求,人工写入代码中以实现数据采集逻辑。采集范围广、应用灵活。但需要研发投入,且需要一定的技术能力。

通常建议您结合 DataFinder 提供的预置事件/属性和自定义埋点进行埋点规划。

埋点、全埋点

了解数据上报要求(格式、数量限制等)

进行埋点规划时,您需明确清楚需采集上报的事件、属性的数据格式要求,以及采集上报的一些限制要求,避免后续因为数据格式等不满足要求,进而导致数据采集后无法入库、后续无法查询分析。
SDK上报的数据通常有固定的格式,主要包括 header、事件两个部分。

字段

作用

数据示例

header

存放事件公共属性。
app_id、os_name 这些都是预置的,会直接放在 header下,如果是您自定义设置的事件公共属性,会放到header.custom 下。

具体请参考相应原生端SDK上报的数据结构。

事件

存放事件及事件属性。
事件分为 launch、terminate、event_v3。
其中 launch、terminate 为预置的启动、退出事件。
event_v3 存放自定义事件、page 事件等,每个 event_v3 类型事件都有 event、params、local_time_ms、session_id 几个字段,其中local_time_ms、session_id 是SDK自动产生的,而event、params 是业务设置的,event 是事件名,params 存放的是事件属性(值是 JSON 对象进行了序列化操作)。

其中,需要上报自定义事件、自定义属性时,您需确保事件和属性的数据格式符合要求,当前 DataFinder 支持的数据格式要求和数据上报的限制请参见支持的数据格式与事件/属性分类
常见问题:

了解用户标识逻辑

进行埋点规划时,您需要了解 DataFinder 的用户标识逻辑,用于结合自身业务的用户标识逻辑进而最终统一用户的标识数据来源。DataFinder 默认以用户作为统计分析的对象,默认使用 SSID 作为用户唯一标识 ID 来计算指标,此时用户的 SSID 就是默认的统计口径。当您的分析对象为用户时,建议保持默认统计口径 SSID,DataFinder 可通过 ID_Mapping 将用户的device_id、user_unique_id 等进行 mapping 后,尽量通过一个 SSID 还原一个真实的用户个体。

  • device_id:可作为设备的唯一 id,多为无法获取用户实名 id的场景下使用。
  • user_unique_id:为登录态用户标识,多为在能获取用户实名 ID 场景下使用,一般情况直接使用产品业务中使用的用户标识,比如登录账号。当 user_unique_id 未设定时,在 SaaS 版本中,系统会自动使用 device_id 替代。
  • SSID:为 DataFinder 的用户统计口径 ID,与设备标识 device_id、登录态用户标识 user_unique_id 互相 Mapping,能保证用户匿名和实名状态下的 ID 统一。

三类 ID 的 mapping 逻辑和更多关于用户标识的介绍详情请参见支持的用户唯一标识

说明

  • 如果您的业务中用户实名 ID 有多种 ID 类型,例如,可通过账号 ID、用户手机号等多种 ID 类型来标注用户的实名信息,您也可以使用多ID类型功能,详情请参见使用多ID类型
  • 同时有 APP 端、web 端、小程序端,每个端的用户实名、匿名的业务标识逻辑不一致,最终ssid的标识怎么标识?
  • 内嵌 H5 时,用户的标识怎么标识?

了解客户端支持的预置事件和属性

如上文所述,大部分业务分析场景中,您需要结合自身业务特性进行自定义埋点的规划和集成,在此之前,您可以先了解下当前 DataFinder 已为您提供的预置事件、预置属性有哪些,结合已有的预置事件和属性能力,进一步规划自定义代码埋点的需求。

  • App 端支持的预置事件和属性列表请参见Android端预置事件及属性
  • 同时您还需关注当前禁用的预置属性列表,后续规划自定义埋点及属性时需避免与禁用属性同名,否则会导致数据无法正常上报,详情请参见禁用属性列表

梳理埋点需求设计埋点方案

准备工作

步骤1(可选):创建埋点需求/录入自定义埋点

完成埋点规划后,建议您根据规划将埋点需求创建再 DataFinder 的需求管理页面,并将自定义埋点先录入 DataFinder 完成自定义埋点在 DataFinder 元数据的入库。

  • 埋点需求管理:您可以通过 DataFinder 的埋点需求管理功能来管理埋点需求,后续可在埋点需求管理页面中持续维护和管理需求,提高管理效率。创建埋点需求管理的操作请参见需求管理
  • 自定义埋点录入:您可以根据埋点规划,先将自定义埋点创建录入至 DataFinder 的元数据,操作详情请参见新增事件新增事件属性新增用户属性

步骤2:获取 APPID

在开始集成前,首先需要在集团中拥有一个应用,进行 SDK 集成前,您需要获取对应应用的 appid 信息。

  • SaaS-云原生场景下,您可以在「项目中心」->「项目管理」->「项目详情」-> 接入应用的「详情」->「应用 ID」中可查看您的 appid,详情请参见项目管理
    Image
  • SaaS-非云原生场景下,您可以在「应用列表」-> 接入应用的「详情」->「应用 ID」中可查看您的 appid,详情请参见应用列表
    Image

步骤3:获取上报地址

进行数据接入上报时,您需要根据当前的环境类型和端类型确认您的数据上报地址。如果上报地址设置错误,后续会导致您无法正常上报、查询到数据。

获取数据上报地址

注意

  • 请在上报数据前,务必确认您当前使用的环境类型,根据环境类型配置上报地址。查看当前的环境类型请参见SaaS云原生/非云原生&私有化环境
  • 如果您使用的是 SaaS-云原生环境,您也需确认您的服务所在的地域,根据所在地域配置上报地址(通常您的服务会在华北2-北京地域,部分用户可能会使用其他地域)。SaaS-云原生用户查看服务所在地域请参见支持的地域

SaaS-云原生 & SaaS-非云原生

端类型

SaaS-云原生环境
(国内:华北2-北京&华南1-广州)

SaaS-云原生环境
(海外:亚太东南-柔佛)

SaaS-非云原生环境 国内环境

SaaS-非云原生 海外BytePlus环境
(以下 SG 指新加坡)

iOS

  • SaaS-云原生(华北):https://gator.volces.com
  • SaaS-云原生(华南):https://gator.uba.cn-guangzhou.volces.com
  • https://gator.uba.ap-southeast-1.volces.com

引入:'Host/CN' 后,无需配置

引入:'Host/SG' 后,无需配置

Android

  • SaaS-云原生(华北):https://gator.volces.com
  • SaaS-云原生(华南):https://gator.uba.cn-guangzhou.volces.com
  • 需要配合使用 cn 包:'com.bytedance.applog:RangersAppLog-xxx-cn:version'
  • https://gator.uba.ap-southeast-1.volces.com
  • 需要配合使用海外包:'com.bytedance.applog:RangersAppLog-xxx-global:version'
  • 无需配置,使用默认的数据上报地址
  • 需要配合使用 cn 包:'com.bytedance.applog:RangersAppLog-xxx-cn:version'
  • 无需配置,默认上报到 SG
  • 需要配合使用海外包:'com.bytedance.applog:RangersAppLog-xxx-global:version'

私有化环境

私有化部署场景下,您需要获取部署私有化环境时,自行规划配置的数据上送地址。如您不清楚此地址,请联系您的项目经理或客户成功经理。

集成SDK

(可选)下载示例 demo

以下为您提供了一个简单的 React Native 项目作为示例 Demo,您可先下载 Demo 文件用于学习了解 React Native SDK 的集成操作。

注意:使用Demo时请将其中的app_id和上报域名更换成自己的。

Demo

带全埋点Demo

ReactNavigationExample.zip
未知大小
ReactNavigationExample_带全埋点.zip
未知大小

step1:添加React Native插件以及原生端依赖

说明

采集本质上是依靠原生端SDK的采集能力的,React Native插件只是对原生端SDK API的Bridge实现,用来调用原生端SDK的API,所以您需要同时添加React Native插件和原生端依赖。

使用React Native插件以及原生端依赖,具体操作如下:

添加React Native插件

操作指导

npm install rangers_applog_reactnative_plugin

添加原生端依赖

  • iOS原生端依赖配置及安装

    说明

    详细配置请参考iOS SDK 集成文档中step1:添加SDK所需依赖部分,这边只列出关键部分以示例。

    在Podfile中,添加source源,并引入SDK,并执行pod install --repo-update更新Pods。

    云原生环境

    私有化

    非云原生环境

    source 'https://github.com/volcengine/volcengine-specs.git'
    
    # target 'TestDemo' do
        # ...
        pod 'RangersAppLog', '6.17.3',
            :subspecs => [
                'Core',
                'UITracker'
            ]
    # end
    
    source 'https://github.com/volcengine/volcengine-specs.git'
    
    # target 'TestDemo' do
        # ...
        pod 'RangersAppLog', '6.17.3',
            :subspecs => [
                'Core',
                'UITracker'
            ]
    # end
    
    source 'https://github.com/volcengine/volcengine-specs.git'
    
    # target 'TestDemo' do
        # ...
        pod 'RangersAppLog', '6.17.3',
            :subspecs => [
                'Core',
                # 非云原生-国内
                'Host/CN',
                # 非云原生-海外
                # 'Host/SG',
                'UITracker'
            ]
    # end
    
  • Android原生端依赖配置及安装

    说明

    详细配置请参考Android SDK 集成文档中step1:添加SDK所需依赖部分,这边只列出关键部分以示例。

    添加火山仓库依赖,并添加SDK依赖。

    全部环境一致

    添加火山仓库依赖

    • Gradle 7.0 以下:在根目录级别的 build.gradle 中添加 maven 仓库

      // 在根目录级别的 build.gradle 中添加 maven 仓库
      allprojects {
          repositories {
              // 其他仓库
              // 配置 Finder SDK 拉取仓库
              maven {
                  url 'https://artifact.bytedance.com/repository/Volcengine/'
              }
          }
      }
      
    • Gradle 7.0 以上:在根目录级别的 setting.gradle 中添加 maven 仓库

      // 在根目录级别的 setting.gradle 中添加 maven 仓库
      dependencyResolutionManagement {
          repositories {
              // 其他仓库
              // 配置 Finder SDK 拉取仓库
              maven {
                  url = uri("https://artifact.bytedance.com/repository/Volcengine/")
              }
          }
      }
      

    添加 SDK 依赖:在 App 级别下 build.gradle 文件的 dependencies 中 引入 SDK。

    // 在 App 级别下 build.gradle 文件的 dependencies 中 引入 SDK,集成 All 版本,推荐此版本
    implementation 'com.bytedance.applog:RangersAppLog-All-cn:6.17.1'
    
    // 如您不需要全埋点采集、圈选、web 打通等功能,仅需要自定义埋点,可集成 Lite 版本:
    // 在 App 级别下 build.gradle 文件的 dependencies 中引入SDK,集成Lite版本
    implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.17.1'
    

step2:初始化 SDK

以下示例,为您逐步演示大部分场景下初始化SDK的代码接入。

导入并初始化

注意

React Native目前需在原生端代码中完成初始化,请分别初始化iOS SDK、Android SDK。

  • iOS端请参考:

    操作指导

    Objective-C请参考:

    #import <RangersAppLog/BDAutoTrack.h>
    #import <RangersAppLog/BDAutoTrackConfig.h>
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        /* 初始化SDK开始 */
        BDAutoTrackConfig*config = [BDAutoTrackConfig configWithAppID:@"{{APPID}}" launchOptions:launchOptions];
        // 设置渠道,iOS一般默认App Store渠道
        config.channel = @"App Store";
    
        // 设置数据上送地址,您需根据使用的DataFinder服务所在地域配置上送地址,详情见上文 获取数据上送地址 章节
        config.serviceVendor = BDAutoTrackServiceVendorPrivate;
        BDAutoTrackRequestHostBlock block =
            ^NSString *(BDAutoTrackServiceVendor vendor, BDAutoTrackRequestURLType requestURLType) {
                return @"https://gator.volces.com";
            };
        [BDAutoTrack setRequestHostBlock:block];
    
        config.autoTrackEnabled = YES; // 全埋点开关,YES开启,NO关闭
        config.showDebugLog = NO; // YES:开启日志,NO:关闭日志
        config.logNeedEncrypt = YES; // 加密开关,YES开启,NO关闭
        [BDAutoTrack sharedTrackWithConfig:config];
        /* 初始化SDK结束 */
    
        // 授权后
        [[BDAutoTrack sharedTrack] startTrack]; //SDK启动
    
        return YES;
    }
    

    Swift请参考:

    import RangersAppLog
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    
        /* 初始化SDK开始 */
        let config = BDAutoTrackConfig(appID: "{{APPID}}")
        // 设置渠道,iOS一般默认App Store渠道
        config.channel = "App Store"
        // 设置数据上送地址,您需根据使用的DataFinder服务所在地域配置上送地址
        config.serviceVendor = .private
        BDAutoTrack.setRequestHostBlock {(vendor: BDAutoTrackServiceVendor, requestURLType:BDAutoTrackRequestURLType) -> String? in
            return "https://gator.volces.com"
        }
    
        config.autoTrackEnabled = true // 全埋点开关,true开启,false关闭
        config.showDebugLog = false // true:开启日志,需要参考4.3设置Logger,false:关闭日志
        config.logNeedEncrypt = true // 加密开关,true开启,false关闭
        BDAutoTrack.sharedTrack(with: config)
        /* 初始化SDK结束 */
    
        BDAutoTrack.shared().start() //SDK启动
    
        return true
    }
    
  • Android端请参考:

    操作指导

    // 第一个参数 APPID: 参考 准备工作-步骤2 获取
    // 第二个参数 CHANNEL: 填写渠道信息(您的包当前是上传到哪个渠道,比如小米、华为、Google),请注意不能为空
    // {{APPID}}、{{CHANNEL}} 为占位符,请替换为实际内容
    final InitConfig config = new InitConfig("{{APPID}}", "{{CHANNEL}}");
    // 设置数据上送地址,您需根据使用的 DataFinder 服务所在地域配置上送地址,
    // 此处以SaaS-云原生的华北地域做示例,详情见上文 获取数据上送地址 部分
    config.setUriConfig(UriConfig.createByDomain("https://gator.volces.com", null));
    // 确保 start 才开始用用户信息采集
    config.setAutoStart(false);
    // 全埋点开关,true开启,false关闭
    config.setAutoTrackEnabled(true);
    // true:开启日志,false:关闭日志,默认关闭,可在本地调试时打开
    config.setLogEnable(false);
    // 加密开关,true:开启,false:关闭
    AppLog.setEncryptAndCompress(true);
    // 初始化一次即可
    // Applition 中初始化建议使用该方法
    AppLog.init(this, config);
    // Activity 中初始化建议使用该方法
    AppLog.init(this, config, this);
    
    // 请在用户授权后调用如下方法,start 开始实际采集用户信息+上报:
    AppLog.start();
    

上报自定义事件

在原生端代码中完成初始化后,就可以在React Native侧使用onEventV3来上报自定义事件了。

操作指导

import { NativeModules } from 'react-native';
const { RangersAppLogModule } = NativeModules;

// 示例:上报事件event_name,该事件包含两个属性
//      一个string类型的属性,属性名为key_string,属性值为value_string
//      一个int类型的属性,属性名为key_int,属性值为10
RangersAppLogModule.onEventV3("event_name", {
    "key_string": "value_string",
    "key_int": 10
});

设置用户登录态

如果需要设置用户登录态,可以在React Native侧使用setUserUniqueId 方法设置 user_unique_id 属性。
通常对于需要用户实名登录时,业务上会使用一个 ID 来唯一标识这个用户,您可以通过 setUserUniqueId 方法上报对应的业务的用户标识 ID。通常这个取值可以通过业务接口获取,或者直接读取已有的固定用户标识 ID 值。如果您需要了解 DataFinder 的用户标识逻辑,详情请参见支持的用户唯一标识

操作指导

import { NativeModules } from 'react-native';
const { RangersAppLogModule } = NativeModules;

// 登录时设置您账号体系的ID, 并保证其唯一性
RangersAppLogModule.setUserUniqueId('{{USER_UNIQUE_ID}}');

step3:验证上报

目前可以参考各个原生端的验证方式。

更多SDK集成实践

事件公共属性

详情请参见事件公共属性

上报自定义用户属性

详情请参见user_unique_id、用户属性相关

全埋点采集

详情请参见全埋点场景

更多场景实践

更多场景实践请参见React Native SDK 集成场景实践

埋点数据验证

完成初始化验证后,您可以在客户端进行测试操作,触发一些待采集上报的事件,测试事件上报后,大约15分钟内,您可以在增长分析平台中的用户细查页面查看具体用户行为流数据,即能看到测试事件及事件属性数据,用于验证埋点数据是否可正常采集上报。

  • 用户细查页面中展示的用户行为流数据通常有固定的格式,主要包括userheaderevents三个部分,分别展示采集上报的用户属性数据、公共事件属性属性、事件及事件属性数据,上报的数据包含了开启采集的预置和自定义的数据。

  • 如果在用户细查处能看到对应事件,表明事件上报成功,通过观察事件的属性,可以确认相应属性是否也成功上报上来了。

  • 如果数据没有正常在用户细查中查询到,您可检查一下:

SDK API 列表

DataFinder为您提供了丰富的API接口,除了上述通用流程中介绍的核心接口和典型场景的使用示例外,您也可以了解当前iOS 支持的主要API接口和其作用,根据业务需求可灵活调用对应接口完成业务数据埋点。

分类

API列表

API说明

主要API

setUserUniqueId

设置用户登录态。在初始化之后设置user_unique_id值,SDK会保存,因此只需要发生变化的时候设置。

onEventV3

上报事件,在初始化之后才能调用。

setHeaderInfo

设置自定义的公共属性。

removeHeaderInfo

移除自定义的公共属性。

getDeviceId

获取平台ID。

模块API

AB实验功能API说明

SDK提供AB实验能力,并提供了一系列的方法:getABTestConfigValueForKey、getAbSdkVersion、getAllAbTestConfigs。

用户属性功能API说明

提供设置用户属性能力,并提供了一系列的方法:profileSet、profileSetOnce、profileUnset、profileIncrement、profileAppend。