You need to enable JavaScript to run this app.
导航

Flutter SDK集成开发指南​

最近更新时间2023.11.22 17:40:29

首次发布时间2023.01.10 20:24:53

1. 集成SDK

1.1 集成 Flutter 插件

在 Flutter 项目的 pubspec.yaml 中添加 rangers_applog_flutter_plugin 依赖

dependencies:
  ......
  rangers_applog_flutter_plugin: ^1.3.0

并安装插件

flutter packages get

1.2 集成 iOS 原生端依赖

1.2.1 集成iOS SDK

如您使用CocoaPods远程集成,请参考iOS SDK集成开发指南1.1~1.4小节;
如您需手动引入集成,请参考1.5小节。

1.2.2 配置Scheme(可选)

如需使用实时埋点检测(https://www.volcengine.com/docs/6285/66054)功能,请参考 iOS SDK集成开发指南第3节,配置Scheme。

1.3 集成 Android 原生端依赖

1.3.1 集成Android SDK

如您使用远程集成,请参考Android SDK集成开发指南1.1~1.5小节;
如您需手动引入集成,请参考1.8小节。
⚠️请注意,Flutter集成Android依赖时,需要集成Lite版SDK包,即1.3小节中的「Lite版本:com.bytedance.applog:RangersAppLog-Lite-cn」,因此暂不能使用全埋点采集、圈选功能。

1.3.2 配置Scheme(可选)

如需使用实时埋点检测(https://www.volcengine.com/docs/6285/66054)功能,请参考Android SDK集成开发指南第3节,配置Scheme。

2. 初始化SDK

说明
SDK会在初始化的时候就采集用户信息,请确保您采集用户信息之前已经获得用户授权。
合规建议操作如下:
用户授权后再进行SDK的初始化,取得用户授权前所有的信息都不会采集,预置事件也不会被采集。

2.1 获取appid

在开始集成前,首先需要在集团中拥有一个应用,可以创建一个属于自己的应用。
「应用列表」-> 接入应用的「详情」->「应用ID」中可查看您的appid。

2.2 获取数据上送地址

私有化部署版本需要获取数据上送地址。
如您不清楚此地址,请联系您的项目经理或客户成功经理。

2.3 初始化SDK(SaaS版本)

如您使用SaaS部署版本,请参照如下代码初始化SDK。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 初始化SDK
String appId = '{{APPID}}'; // 参考2.1节获取
String channel = '{{CHANNEL}}'; // 填写App下载/分发渠道,例如iOS一般是'App Store'
bool enableEncrypt = true; // 加密开关
bool  enableAB =  true;  //是否开启 AB 实验
bool enableDebugLog = false; // 原生端日志开关
String? host = null; // SaaS版本使用默认的数据上送地址

RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAB, enableEncrypt, enableDebugLog, host);

2.4 初始化SDK(私有化版本)

如您使用私有化部署版本,请参照如下代码初始化SDK。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 初始化SDK
String appId = '{{APPID}}'; // 参考2.1节获取
String channel = '{{CHANNEL}}'; // 填写App下载/分发渠道,例如iOS一般是'App Store'
bool enableEncrypt = true; // 加密开关
bool  enableAB =  true;  //是否开启 AB 实验
bool enableDebugLog = false; // 原生端日志开关
// 设置私有化部署数据上送地址,参考2.2节获取,{{REPORT_URL}} 例如 https://yourdomain.com,注意域名后不要加“/”
String? host = '{{REPORT_URL}}';

RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAB, enableEncrypt, enableDebugLog, host);
3. 用户与用户属性

3.1 登录态变化调用

3.1.1 账户登录

如您的产品中有账户体系,请在用户登录后立即设置uuid,以保证用户登录前后口径一致性。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

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

3.1.2 账户登出

在账户登出时调用。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 登出时设置uuid为null
RangersApplogFlutterPlugin.setUserUniqueId(null);

3.2 设置用户属性

3.2.1 profileSet

设置用户属性,存在则覆盖,不存在则创建。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:设置用户属性,属性名为key,属性值为value
RangersApplogFlutterPlugin.profileSet({"key": "value"});

3.2.2 profileSetOnce

设置用户属性,存在则不设置,不存在则创建,适合首次相关的用户属性,比如首次访问时间等。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:设置用户属性,属性名为key_once,属性值为value_once
RangersApplogFlutterPlugin.profileSetOnce({"key_once": "value_once"});

3.2.3 profileIncrement

设置数值类型的属性,可进行累加。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:设置用户属性,属性名为key,属性值为1
RangersApplogFlutterPlugin.profileIncrement({"key": 1});

3.2.4 profileAppend

设置List类型的用户属性,可持续向List内添加。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

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

3.2.5 profileUnset

删除用户的属性。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 例:删除用户属性,属性名为key
RangersApplogFlutterPlugin.profileUnset("key");
4. 获取AB实验参数

4.1 获取AB实验值

可以直接传入 key,从配置中读取需要的值

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:获取 key 为 ab_test_key 的 value
String value = await RangersApplogFlutterPlugin.getABTestConfigValueForKey("ab_test_key");

4.2 获取AB实验版本

返回值是所有实验版本ID,以逗号隔开

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:获取所有 ab sdk version
String vids = await RangersApplogFlutterPlugin.getAbSdkVersion();

4.3 获取AB实验完整配置

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:获取完整的 ab config
Map<dynamic, dynamic> config = await RangersApplogFlutterPlugin.getAllAbTestConfig();

4.4 监听AB实验配置变化

当 AB 实验配置发生变化时候,会触发事件

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

Map<dynamic, dynamic> config;

// 示例:监听 ab config 变化
RangersApplogFlutterPlugin.receiveABTestConfigStream().listen((event) {
    // 更新 ab config
    config = await RangersApplogFlutterPlugin.getAllAbTestConfig();
});

4.5 监听AB实验版本变化

当 AB 实验版本发生变化时候,会触发事件

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

String vids;

// 示例:监听 ab version 变化
RangersApplogFlutterPlugin.receiveABVidsChangeStream().listen((event) {
    // 更新 ab version
    vids = await RangersApplogFlutterPlugin.getAbSdkVersion();
});
5.事件与事件属性(实验指标)

5.1 上报代码埋点

用户行为日志采用事件event+属性params的形式,事件一般对应多个属性,也可以仅有事件没有属性。
仅上报事件的代码埋点,示例如下:

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:上报事件event,该事件不包含属性
RangersApplogFlutterPlugin.onEventV3("event");

上报事件和对应属性的代码埋点,示例如下:

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

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

5.2 事件公共属性

如需在每个事件中都包括某属性,可通过公共属性设置,无需在每个事件中重复设置。公共属性只需设置一次,即可包括在所有代码埋点事件中。

5.2.1 设置公共属性

关于自定义 “公共属性” 请注意:
1. 上报机制是随着每一次日志发送进行提交,默认的日志发送频率是1分钟,所以如果在一分钟内连续修改自定义公共属性,按照日志发送前的最后一次修改为准  2. 不推荐高频次修改,如每秒修改一次

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 设置自定义的公共属性,属性名为key_public,属性值为value_public
RangersApplogFlutterPlugin.setHeaderInfo({
    "key_public": "value_public"
});

5.2.2 移除公共属性

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 示例:移除属性名为key_public的公共属性
RangersApplogFlutterPlugin.removeHeaderInfo("key_public");
6. 其他功能

6.1 获取平台ID与通知

请注意 deviceid 是火山生成的 id,不是原始设备 id。

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

// 请在初始化完成的3秒后开始获取,否则可能返回为空
String did = await RangersApplogFlutterPlugin.getDeviceId();