默认情况下,如下面初始化代码所示,SDK 会自动start。
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);
如果需要初始化和start分开,需要明确设置autoStart为false告知SDK只初始化,等待后续调用start
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 'autoStart': false, // 设置为false,等待后续调用start }); RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAB, enableEncrypt, enableDebugLog, host); // 之后再start RangersApplogFlutterPlugin.start();
如需在每个事件中都包括某属性,可通过公共属性设置,无需在每个事件中重复设置。公共属性只需设置一次,即可包括在所有代码埋点事件、预置事件和全埋点事件中。
关于自定义 “公共属性” 请注意:
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");
如您的产品中有账户体系,请在用户登录后立即设置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");
请注意 deviceid 是火山生成的 id,不是原始设备 id。
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart'; // 请在初始化完成的3秒后开始获取,否则可能返回为空 String did = await RangersApplogFlutterPlugin.getDeviceId();
说明
最低支持的版本:1.4.0
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; // ... class _MyAppState extends State<MyApp> { @override void initState() { RangersApplogAutoTrack().config(RangersApplogAutoTrackConfig( pageConfigs: [ RangersApplogAutoTrackPageConfig<Home>( pageID: 'home-id', pageTitle: 'Home', pagePath: '/home-custom', ignore: false, ), RangersApplogAutoTrackPageConfig<Page2>( pageID: 'page2-id', ), RangersApplogAutoTrackPageConfig<Page3>( pageID: 'page3-id', ), ], ignoreElementKeys: [], )).enablePageLeave().enableLog().enable(); super.initState(); } // ... @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: RangersApplogNavigationObserver.wrap([]), initialRoute: '/', routes: { '/': ((context) => Home()), '/page2': ((context) => Page2()), '/page3': ((context) => Page3()), }, ); } }
注意
MaterialApp 中增加 navigatorObservers
全埋点中 pageview,pageleave 是通过 NavigatorObserver 采集的,我们可以直接在 MaterialApp 中配置 RangersApplogNavigationObserver:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; // ... @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: [RangersApplogNavigationObserver()], // ... ); } // ...
也可以在已有的 navigatorObservers 列表中,通过 RangersApplogNavigationObserver.wrap 包裹:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; // ... @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: RangersApplogNavigationObserver.wrap([]), // ... ); } // ...
在 App 的 initState()
中启用全埋点:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; // ... @override void initState() { RangersApplogAutoTrack().enable(); super.initState(); } // ...
全埋点默认关闭,可通过以下方法打开:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enable();
关闭全埋点:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disable();
pageview 默认开启,可用以下方法关闭:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disablePageView();
开启 pageview:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enablePageView();
pageleave 默认关闭,可用以下方法开启(入参为 true,或者不传):
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enablePageLeave();
关闭 pageleave:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disablePageLeave();
click 默认开启,可用以下方法关闭:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disableClick();
开启 click:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enableClick();
我们通过 Key 来设置元素的自定义 ID,自定义 ID 在 click 埋点中会放在 element_manual_key
字段中一起上报,值是 Key 的 toString()
方法返回值,可以直接使用 RangersApplogElementKey
。
触发 click 埋点的元素目前支持以下组件:
对于支持列表以外的组件,则无法通过 Key 设置自定义 ID,click 埋点会触发在组件内部的 GestureDetector 上。
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... ListTile( key: RangersApplogElementKey('custom-key'), title: Text("Click Me"), onTap: () {} ) ...
如果不希望统计某些元素的 click 埋点,可以通过以下办法忽略 click 元素:
通过 RangersApplogElementKey 设置 ignore:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... ListTile( key: RangersApplogElementKey('custom-key', ignore: true), title: Text("Click Me"), onTap: () {}, ) ...
通过 ignoreElementKeys()
方法指定元素的 key:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... final customKey = RangersApplogElementKey('custom-key'); ... RangersApplogAutoTrack().ignoreElementKeys([customKey]); ... ListTile( key: customKey, title: Text("Click Me"), onTap: () {}, ) ...
通过 ignoreElementStringKeys()
方法指定元素 key 的 string 值,只要与 key 的 toString()
返回值匹配即可生效,这里建议使用 RangersApplogElementKey:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... RangersApplogAutoTrack().ignoreElementStringKeys(['custom-key']); ... ListTile( key: RangersApplogElementKey('custom-key'), title: Text("Click Me"), onTap: () {}, ) ...
日志默认关闭,可通过以下方式开启:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enableLog();
page_manual_key
字段上报。page_title
字段上报。page_path
字段上报。toString()
返回值相同。示例
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().config(RangersApplogAutoTrackConfig( pageConfigs: [ RangersApplogAutoTrackPageConfig<Home>( pageID: 'home-id', pageTitle: 'Home', pagePath: '/home-custom', ignore: false, ), RangersApplogAutoTrackPageConfig<Page2>( pageID: 'page2-id', ), RangersApplogAutoTrackPageConfig<Page3>( pageID: 'page3-id', ), ], ignoreElementKeys: [], ignoreElementStringKeys: [], enablePageView: true, enablePageLeave: false, enableClick: true, ));