在 Flutter 项目的 pubspec.yaml
中添加 rangers_applog_flutter_plugin
依赖
dependencies: ...... rangers_applog_flutter_plugin: ^1.4.0
并安装插件
flutter packages get
请参考iOS SDK集成开发指南中集成SDK部分章节:
如需使用埋点实时验证功能,请参考 iOS SDK集成开发指南中配置Scheme章节。
请参考Android SDK集成开发指南中集成SDK部分章节:
如需使用埋点实时验证功能,请参考Android SDK集成开发指南中配置Scheme章节。
注意
SDK会在初始化的时候就采集用户信息,请确保您采集用户信息之前已经获得用户授权。
合规建议操作如下:
用户授权后再进行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; // 原生端日志开关 // 设置数据上送地址 String? host = 'https://gator.volces.com'; RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAB, enableEncrypt, enableDebugLog, host);
如您使用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);
如您使用私有化部署版本,请参照如下代码初始化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);
如您的产品中有账户体系,请在用户登录后立即设置uuid,以保证用户登录前后口径一致性。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 登录时设置您账号体系的ID, 并保证其唯一性 RangersApplogFlutterPlugin.setUserUniqueId('{{USER_UNIQUE_ID}}');
在账户登出时调用。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 登出时设置uuid为null RangersApplogFlutterPlugin.setUserUniqueId(null);
设置用户属性,存在则覆盖,不存在则创建。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:设置用户属性,属性名为key,属性值为value RangersApplogFlutterPlugin.profileSet({"key": "value"});
设置用户属性,存在则不设置,不存在则创建,适合首次相关的用户属性,比如首次访问时间等。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:设置用户属性,属性名为key_once,属性值为value_once RangersApplogFlutterPlugin.profileSetOnce({"key_once": "value_once"});
设置数值类型的属性,可进行累加。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:设置用户属性,属性名为key,属性值为1 RangersApplogFlutterPlugin.profileIncrement({"key": 1});
设置List类型的用户属性,可持续向List内添加。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append RangersApplogFlutterPlugin.profileAppend({"key": "value_append"});
删除用户的属性。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 例:删除用户属性,属性名为key RangersApplogFlutterPlugin.profileUnset("key");
可以直接传入 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");
返回值是所有实验版本ID,以逗号隔开
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:获取所有 ab sdk version String vids = await RangersApplogFlutterPlugin.getAbSdkVersion();
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:获取完整的 ab config Map<dynamic, dynamic> config = await RangersApplogFlutterPlugin.getAllAbTestConfig();
当 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(); });
当 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(); });
用户行为日志采用事件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 });
如需在每个事件中都包括某属性,可通过公共属性设置,无需在每个事件中重复设置。公共属性只需设置一次,即可包括在所有代码埋点事件中。
关于自定义 “公共属性” 请注意:
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 设置自定义的公共属性,属性名为key_public,属性值为value_public RangersApplogFlutterPlugin.setHeaderInfo({ "key_public": "value_public" });
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 示例:移除属性名为key_public的公共属性 RangersApplogFlutterPlugin.removeHeaderInfo("key_public");
请注意 deviceid 是火山生成的 id,不是原始设备 id。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 请在初始化完成的3秒后开始获取,否则可能返回为空 String did = await RangersApplogFlutterPlugin.getDeviceId();