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事件 // ... });