API功能

自定义用户信息

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

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

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

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

    Dart

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

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

    Dart

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

自定义异常

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

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

```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);
  • 接口说明
参数名 类型 注释
pageName String 页面名称。必传参数,空或空串接口调用无效。
pageAlias String 页面别名
  • 示例

    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});
  • 接口说明
参数名 类型 注释
eventID String 事件ID。必传参数,空或空串接口调用无效。
eventName String 事件名称
param String 参数
info Map 附加信息
  • 示例

    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});
  • 接口说明
参数名 类型 注释
eventID String 事件ID。必传参数,空或空串接口调用无效。
eventName String 事件名称
param String 参数
info Map 附加信息
  • 示例

    Dart

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

自定义日志

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

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

    Dart

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

自定义指标

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

Future<void> setCustomMetric(String logInfo, int metricValue, String param);
  • 接口说明
参数名 类型 注释
metricName String 指标名称。必传参数,空或空串接口调用无效。
metricValue int 指标值。必传参数,指标为空接口调用无效。
param String 指标值
  • 示例

    Dart

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

自定义方法

 Future<void> setCustomMethodStart(String methodName, String param);
 Future<void> setCustomMethodEnd(String methodName, String param);
  • 接口说明
参数名 类型 注释
methodName String 方法名称
param String 方法参数
  • 示例

    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));
  • 接口说明
参数名 类型 注释
error Object 错误原因。
stack StackTrace 错误堆栈。
isAsync bool 是否是异步错误。
  • 示例

    Dart

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

results matching ""

    No results matching ""