跳到主要内容
版本:3.7.0

Flutter API说明

自定义用户信息

bonree_flutter_plugin支持设置与用户相关的信息,从而完成性能数据与实际用户相关联的需求场景。

设置用户信息有两种方式:

  • 设置用户ID,以字符串形式给用户做标识。接口如下:

    /// 设置用户ID
    Future<void> setUserID(String userID);
    • 接口说明
参数名类型注释
userIDString用户ID
  • 示例

    Dart

    Bonree().setUserID("user-id");
  • 以 Map 形式设置用户附加信息。接口如下:

    /// 设置附加信息
    Future<void> setExtraInfo(Map<String, dynamic> extraInfo);
    • 接口说明
参数名类型注释
extraInfoMap用户附加信息。Value限制String或int类型。
  • 示例

    Dart

    Bonree().setExtraInfo({"id":"123456", "name":"Tom"});

自定义异常

调用接口并传入相应参数,可完成自定义异常数据的统计功能。

/// 自定义异常收集
Future<void> setCustomException(
String exceptionType, String causedBy, String errorDump);
  • 接口说明
参数名类型注释
exceptionTypeString异常类型。必传参数,空或空串接口调用无效。
causedByString异常原因
errorDumpString异常堆栈
  • 示例

    Dart

    Bonree().setCustomException("Custom exception type",
    "Caused by customer.",
    "Custom error dump 0\nCustom error dump 1");

注意:即使在自定义异常接口中传入了正确的崩溃堆栈,平台也不会进行崩溃堆栈的符号解析。

自定义视图

调用接口并传入相应参数,可完成自定义视图数据统计功能。

/// 自定义视图——标记视图开始(和视图结束方法成对调用)
Future<void> setCustomPageStart(String pageName, String pageAlias);
/// 自定义视图——标记视图结束(和视图开始方法成对调用)
Future<void> setCustomPageEnd(String pageName, String pageAlias);

  • 接口说明
参数名类型注释
pageNameString页面名称。必传参数,空或空串接口调用无效。
pageAliasString页面别名
  • 示例

    Dart


    Bonree().setCustomPageStart("page01", "首页");

    Bonree().setCustomPageEnd("page01", "首页");

注意:自定义视图的开始与结束记录接口必须成对调用,并且同一视图的pageName必须一致,才能正确统计一个完整自定义视图数据并上报。

自定义事件(完整版)

调用接口并传入相应参数,可完成自定义事件数据统计功能。

/// 自定义事件开始
Future<void> setCustomEventStartWithID(String eventID, String eventName, {String? label, String? param, Map<String, String>? info});

/// 自定义事件结束
Future<void> setCustomEventEndWithID(String eventID, String eventName,
{String? label, String? param, Map<String, String>? info});
  • 接口说明
参数名类型注释
eventIDString事件ID。必传参数,空或空串接口调用无效。
eventNameString事件名称
paramString事件附加信息
infoMap事件业务信息
  • 示例

    Dart

    Bonree().setCustomEventStartWithID:("001", "Login", "param",label: "event_label", info: {"info": "bonree"});
    // Some code...
    Bonree().setCustomEventEndWithID:("001", "Login", "param",label: "event_label", info: {"info": "bonree"});

注意:自定义事件开始与结束的匹配使用eventID唯一匹配,使用时请确保未结束事件ID的唯一性。

自定义事件(精简版)

调用接口并传入相应参数,可完成自定义事件数据统计功能。

/// 自定义事件
Future<void> setCustomEvent(String eventID, String eventName, String param, {String? label, Map<String, String>? info});
  • 接口说明
参数名类型注释
eventIDString事件ID。必传参数,空或空串接口调用无效。
eventNameString事件名称
paramString事件附加信息
infoMap事件业务信息
  • 示例

    Dart

    Bonree().setCustomEvent:("001", "Login", "param",label: "event_label", info: {"info": "bonree"});

自定义日志

调用接口并传入相应参数,可完成自定义日志数据统计功能。

/// 自定义日志
Future<void> setCustomLog(String logInfo, String param);
  • 接口说明
参数名类型注释
logInfoString日志信息。必传参数,空或空串接口调用无效。
paramString参数。
  • 示例

    Dart

    Bonree().setCustomLog("2020-01-01 08:30:00 Print log info.", "param");

自定义指标

调用接口并传入相应参数,可完成自定义指标数据统计功能。

Future<void> setCustomMetric(String logInfo, int metricValue, String param);

  • 接口说明
参数名类型注释
metricNameString指标名称。必传参数,空或空串接口调用无效。
metricValueint指标值。必传参数,指标为空接口调用无效。
paramString指标值
  • 示例

    Dart

    Bonree().setCustomMetricWithName("测试指标01", 1 , "param");

自定义方法

Future<void> setCustomMethodStart(String methodName, String param);
Future<void> setCustomMethodEnd(String methodName, String param);

  • 接口说明
参数名类型注释
methodNameString方法名称
paramString方法参数
  • 示例

    Dart


    static void customMethod() {
    Bonree(). setCustomMethodStart("methodName", "param");

    // .....
    Bonree(). setCustomMethodEnd("methodName", "param");
    }

自定义冷启动结束

在需要结束冷启动的时机调用该接口,可以自定义冷启动的结束时机。

Future<void> recordCustomLaunchEnd();
  • 示例

    Bonree(). recordCustomLaunchEnd();

注:使用自定义冷启动结束接口,需要在原生工程中配合调用自定义冷启动开关接口开启该功能。

自定义冷启动开关

是否启用自定义冷启动结束点开关,在原生部分初始化时(前)调用。

  • 示例

    iOS

    //启用自定义结束
    BRSAgent.useCustomLaunch(true);
    BRSAgent.start(withAppID:"your appId");

    Android

    Bonree.withAppID("app_id")
    .withUseCustomLaunch(true)
    .start(getApplicationContext());

Android冷启动需要实现自定义Application类,在onCreate首行初始化:

public class App extends FlutterApplication {
@Override
public void onCreate() {
super.onCreate();
Bonree.withAppID("app_id")
.start(getApplicationContext());
}
}

Flutter视图配置

在首页MaterialApp中设置,注册navigatorObservers导航监听器。

import 'package:bonree_flutter_plugin/bonree_flutter_plugin.dart';

@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorObservers: [BonreeNavigationObserver()],
);
}
静态路由

在首页MaterialApp中设置,路由在routes集合统一管理。

示例:

import 'package:bonree_flutter_plugin/bonree_flutter_plugin.dart';

@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorObservers: [BonreeNavigationObserver()],
routes: {
'home_page': (context) => HomePage(),
'first_page': (context) => FirstPage(),
'second_page': (context) => SecondPage(),
'third_page': (context) => ThirdPage(),
},
);
}
动态路由

Navigator.push()动态路由跳转时使用

两种方式配置:

(1). 引入BonreeMaterialPageRoute,并传入routeName参数,即当前跳转页面名称

示例:

ElevatedButton(
onPressed: () {
Navigator.push(
context,
BonreeMaterialPageRoute(
builder: (context) => SecondPage(),
routeName: 'second_page'));
},
child: Text('第二页'))

(2). 使用flutter的MaterialPageRoute,设置RouteSettings,并传入name参数,即当前跳转页面名称

示例:

ElevatedButton(
onPressed: () {
RouteSettings set = RouteSettings(name: "second_page");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondPage(), settings: set));
},
child: Text('第二页'))

Flutter错误回调

由于Flutter对错误的监控无法逐层传递,在博睿的Flutter插件对同步、异步接口进行监控后,应用内原有的错误监听会失效。因此,Flutter插件提供了统一的错误回调接口。

/// 错误回调接口
void onBonreeErrorCallback(
callback(Object error, StackTrace stack, bool isAsync));
  • 接口说明
参数名类型注释
errorObject错误原因。
stackStackTrace错误堆栈。
isAsyncbool是否是异步错误。
  • 示例

    Dart

    Bonree().onBonreeErrorCallback((error, stacktrace, async) {
    // 处理error事件
    // ...
    });