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

埋点规划
在进行 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类型。
了解客户端支持的预置事件和属性
如上文所述,大部分业务分析场景中,您需要结合自身业务特性进行自定义埋点的规划和集成,在此之前,您可以先了解下当前 DataFinder 已为您提供的预置事件、预置属性有哪些,结合已有的预置事件和属性能力,进一步规划自定义代码埋点的需求。
- App 端支持的预置事件和属性列表请参见APP预置事件及属性。
- 同时您还需关注当前禁用的预置属性列表,后续规划自定义埋点及属性时需避免与禁用属性同名,否则会导致数据无法正常上报,详情请参见禁用属性列表。
梳理埋点需求设计埋点方案
准备工作
步骤1(可选):创建埋点需求/录入自定义埋点
完成埋点规划后,建议您根据规划将埋点需求创建再 DataFinder 的需求管理页面,并将自定义埋点先录入 DataFinder 完成自定义埋点在 DataFinder 元数据的入库。
- 埋点需求管理:您可以通过 DataFinder 的埋点需求管理功能来管理埋点需求,后续可在埋点需求管理页面中持续维护和管理需求,提高管理效率。创建埋点需求管理的操作请参见需求管理。
- 自定义埋点录入:您可以根据埋点规划,先将自定义埋点创建录入至 DataFinder 的元数据,操作详情请参见新增事件、新增事件属性、新增用户属性。
步骤2:获取 APPID
在开始集成前,首先需要在集团中拥有一个应用,进行 SDK 集成前,您需要获取对应应用的 appid 信息。
- SaaS-云原生场景下,您可以在「项目中心」->「项目管理」->「项目详情」-> 接入应用的「详情」->「应用 ID」中可查看您的 appid,详情请参见项目管理。

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

步骤3:获取上报地址
进行数据接入上报时,您需要根据当前的环境类型和端类型确认您的数据上报地址。如果上报地址设置错误,后续会导致您无法正常上报、查询到数据。
SaaS环境
注意
- 请在上报数据前,务必确认您当前使用的环境类型,根据环境类型配置上报地址。查看当前的环境类型请参见SaaS云原生/非云原生&私有化环境。
- 如果您使用的是 SaaS-云原生环境,您也需确认您的服务所在的地域,根据所在地域配置上报地址(通常您的服务会在华北2-北京地域,部分用户可能会使用其他地域)。SaaS-云原生用户查看服务所在地域请参见支持的地域。
- 进行Flutter SDK集成时,您需要配置为对应原生端的数据上报地址,请参考对应原生端的“获取上报地址”章节。
私有化环境
私有化部署场景下,您需要获取部署私有化环境时,自行规划配置的数据上送地址。如您不清楚此地址,请联系您的项目经理或客户成功经理。
集成SDK
step1:添加Flutter插件以及原生端依赖
说明
采集本质上是依靠原生端SDK的采集能力的,Flutter插件只是Method Channel的实现,用来调用原生端SDK的API,所以您需要同时添加Flutter插件和原生端依赖。
目前Flutter插件rangers_applog_flutter_plugin
最新版本1.5.0
,支持Flutter平台3.x版本。
使用Flutter插件以及原生端依赖,具体操作如下:
添加Flutter插件
在 Flutter 项目的 pubspec.yaml
中添加 rangers_applog_flutter_plugin
依赖
dependencies:
# ...
rangers_applog_flutter_plugin: 1.5.0
执行安装
flutter packages get
添加原生端依赖:iOS
在Podfile中,添加source源,并引入SDK,并执行pod install --repo-update
更新Pods。
SaaS-云原生环境(含海外柔佛环境) | 私有化 | SaaS-非云原生环境(含海外BytePlus环境) |
---|
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',
# 非云原生-海外BytePlus环境
# 'Host/SG',
'UITracker'
]
# end
|
添加原生端依赖:Android
关键步骤为添加火山仓库依赖,并添加SDK依赖这两个部分,此部分的操作流程在各个环境中一致,要点如下。
添加火山仓库依赖
Gradle 7.0 及以下 | Gradle 7.0 以上 |
---|
在根目录级别的 build.gradle 中添加 maven 仓库 // 在根目录级别的 build.gradle 中添加 maven 仓库
allprojects {
repositories {
// 其他仓库
// 配置 Finder SDK 拉取仓库
maven {
url 'https://artifact.bytedance.com/repository/Volcengine/'
}
}
}
| 在根目录级别的 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'
添加原生端依赖:鸿蒙
说明
- 首先确定宿主端已按照华为的官方文档接入了鸿蒙flutter:https://gitcode.com/openharmony-tpc/flutter_flutter
- 其他详细配置请参考HarmonyOS Next SDK 集成
注意
鸿蒙原生端SDK暂时未发布到华为官方仓库,您需要联系火山引擎技术支持人员获取离线包。
关键步骤为添加必要权限、添加SDK依赖这两个部分,此部分的操作流程在各个环境中一致,要点如下。
添加必要权限。
在oh-package.json5文件中添加 | 在module.json5中添加必要的权限 |
---|
{
// ...
"dependencies": {
// sdk 强 依 赖 用 于 gzip 压 缩
"pako": "^2.1.0",
// 引入 AppLog 组 件 时, 请确保组 件 名 称 是 这个
"@volcengine/applog": "file:./applogx/applogx.har",
// 调 试工具 (可 选 )
"@volcengine/applog_devtools": "file:./applogx/applogx_devtools.har"
},
"overrides": {
// 重 写
"@volcengine/applog": "file:./applogx/applogx.har",
}
}
| requestPermissions: [
{
// 网 络 权 限 ,必 要 添 加
name: 'ohos.permission.INTERNET',
},
{
// wifi 信 息获取,必 要 添 加
name: 'ohos.permission.GET_WIFI_INFO',
},
{
// 获取网 络 信 息,必 要 添 加
name: 'ohos.permission.GET_NETWORK_INFO',
},
{
// 资产 持 久 化 ,建 议 添 加,与 deviceId
name: 'ohos.permission.STORE_PERSISTENT_DATA',
},
{
// oaid 权 限 (可 选 ),建 议 添 加
name: 'ohos.permission.APP_TRACKING_CONSENT',
reason: '$string:app_name',
usedScene: {
abilities: [],
when: 'inuse',
},
},
],
|
在鸿蒙原生工程添加插件(一般安装依赖后会自动link上,需要自己检查一下)。
// GeneratedPluginRegistrant.ets
import RangersApplogFlutterPlugin from 'rangers_applog_flutter_plugin';
export class GeneratedPluginRegistrant {
static registerWith(flutterEngine: FlutterEngine) {
try {
// ...
// 这里添加RangersApplogFlutterPlugin
flutterEngine.getPlugins()?.add(new RangersApplogFlutterPlugin());
} catch (e) {
// ...
}
}
}
添加原生端依赖:其他端
注意
其他端暂时未开放或未支持,如有需求,请联系火山引擎技术支持人员沟通。
step2:初始化 SDK
以下示例,为您逐步演示大部分场景下初始化SDK的代码接入。
导入并初始化
操作指导 |
---|
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';
// 初始化SDK
String appId = '{{APPID}}'; // 替换成自己的
String channel = '{{CHANNEL}}'; // 填写App下载/分发渠道,例如iOS一般是'App Store'
bool enableEncrypt = true; // 加密开关
bool enableDebugLog = false; // 原生端日志开关
bool enableAB = false; // AB实验开关
// 设置数据上送地址,假设国内-华北
String? host = 'https://gator.volces.com';
RangersApplogFlutterPlugin.addInitParams({
'service_vendor': 'private', // 固定值 private
});
RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAB, enableEncrypt, enableDebugLog, host);
|
关于各环境上报域名示例
设置数据上报域名前,您需要先明确您使用的环境和所在的地域,根据实际情况设置上报域名。确认您当前使用的环境类型请参见:SaaS云原生/非云原生&私有化环境。
云原生环境 | 私有化环境 | 非云原生环境 |
---|
- 云原生(国内-华北):https://gator.volces.com
- 云原生(国内-华南):https://gator.uba.cn-guangzhou.volces.com
- 云原生(海外-柔佛):https://gator.uba.ap-southeast-1.volces.com
// 初始化SDK
// ...
// 设置数据上送地址
// 国内-华北
String? host = 'https://gator.volces.com';
// 国内-华南
// String? host = 'https://gator.uba.cn-guangzhou.volces.com';
// 海外-柔佛
// String? host = 'https://gator.uba.ap-southeast-1.volces.com';
RangersApplogFlutterPlugin.addInitParams({
'service_vendor': 'private', // 固定值 private
});
// ...
| // 初始化SDK
// ...
// 设置私有化部署数据上送地址,{{REPORT_URL}} 例如 https://yourdomain.com,注意域名后不要加“/”
String? host = '{{REPORT_URL}}';
RangersApplogFlutterPlugin.addInitParams({
'service_vendor': 'private', // 固定值 private
});
// ...
| // 初始化SDK
// ...
// 非云原生环境使用默认的数据上报地址
String? host = '';
RangersApplogFlutterPlugin.addInitParams({
// 国内环境
'service_vendor': '',
// 海外byteplus
// 'service_vendor': 'sg',
});
// ...
|
上报自定义事件
根据埋点规划,如果需要采集上报自定义事件,您可以使用“onEventV3”设置自定义事件名和事件属性。
操作指导 |
---|
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';
// 示例:上报事件event_name,该事件不包含属性
RangersApplogFlutterPlugin.onEventV3("event_name");
// 示例:上报事件event_name,该事件包含两个属性
// 一个string类型的属性,属性名为key_string,属性值为value_string
// 一个int类型的属性,属性名为key_int,属性值为10
RangersApplogFlutterPlugin.onEventV3("event_name", {
"key_string": "value_string",
"key_int": 10
});
|
设置用户登录态
如果需要设置用户登录态,可以使用setUserUniqueId 方法设置 user_unique_id 属性。
通常对于需要用户实名登录时,业务上会使用一个 ID 来唯一标识这个用户,您可以通过 setUserUniqueId 方法上报对应的业务的用户标识 ID。通常这个取值可以通过业务接口获取,或者直接读取已有的固定用户标识 ID 值。如果您需要了解 DataFinder 的用户标识逻辑,详情请参见支持的用户唯一标识。
操作指导 |
---|
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';
// 登录时设置您账号体系的ID, 并保证其唯一性
RangersApplogFlutterPlugin.setUserUniqueId('{{USER_UNIQUE_ID}}');
|
step3:验证上报
目前可以参考各个原生端的验证方式。
更多SDK集成实践
事件公共属性
详情请参见事件公共属性。
上报自定义用户属性
详情请参见user_unique_id、用户属性相关。
全埋点采集
详情请参见全埋点场景。
更多场景实践
更多场景实践请参见Flutter SDK 集成场景实践。
埋点数据验证
完成初始化验证后,您可以在客户端进行测试操作,触发一些待采集上报的事件,测试事件上报后,大约15分钟内,您可以在增长分析平台
中的用户细查
页面查看具体用户行为流数据,即能看到测试事件及事件属性数据,用于验证埋点数据是否可正常采集上报。
- 用户细查页面中展示的用户行为流数据通常有固定的格式,主要包括
user
、header
、events
三个部分,分别展示采集上报的用户属性数据、公共事件属性属性、事件及事件属性数据,上报的数据包含了开启采集的预置和自定义的数据。 - 如果在用户细查处能看到对应事件,表明事件上报成功,通过观察事件的属性,可以确认相应属性是否也成功上报上来了。
- 如果数据没有正常在用户细查中查询到,您可检查一下:
SDK API 列表
DataFinder为您提供了丰富的API接口,除了上述通用流程中介绍的核心接口和典型场景的使用示例外,您也可以了解当前iOS 支持的主要API接口和其作用,根据业务需求可灵活调用对应接口完成业务数据埋点。