Skip to main content

alibabacloud_rum_flutter_plugin 2.3.7 copy "alibabacloud_rum_flutter_plugin: ^2.3.7" to clipboard
alibabacloud_rum_flutter_plugin: ^2.3.7 copied to clipboard

The AlibabaCloud RUM Flutter plugin working with SDK for Android and iOS, assists in measuring the performance of the Flutter application.

Alibaba Cloud RUM SDK for Flutter #

package pub likes popularity pub points
alibabacloud_rum_flutter_plugin pub package likes popularity pub points

阿里云用户体验监控 RUM 官方 Flutter 插件,当前支持 Android、iOS、HarmonyOS 平台。

插件集成 #

1. 添加依赖 #

dependencies:
  flutter:
    sdk: flutter

  alibabacloud_rum_flutter_plugin: ^2.3.7

2. 在Flutter项目根目录执行以下命令 #

flutter packages get

3. iOS 在工程 ios 目录下执行以下命令 #

pod install

4. 初始化 SDK #

在 main.dart 文件中导入以下包:

import 'package:alibabacloud_rum_flutter_plugin/alibabacloud_rum_flutter_plugin.dart';

完成 SDK 的初始化:

void main() {
  // 注释原有的 runApp() ⽅法
  // runApp(MyApp());
  // (必须)初始化SDK
  AlibabaCloudRUM().start(MyApp());
  // (可选)自定义用户名称
  AlibabaCloudRUM().setUserName("xxxxxx");
}

错误采集按 Flutter 引擎能力安装:支持 PlatformDispatcher.onError 时保留该入口;Flutter 3.0.0 等缺少该成员的旧引擎仅略过此入口,不影响 FlutterError.onError、HTTP 监控或配置初始化。start() 启动的应用继续由 SDK 管理的 Zone 捕获其范围内的未处理异常,但无法保证覆盖该 Zone 之外的异步异常。

若使用 initialize() 后手动调用 runApp(),后续应用代码不会自动进入 SDK 管理的 Zone;需要由应用自行管理 Zone。旧引擎的异常覆盖范围因此与新引擎不同,Dart Self Monitor 也遵守相同边界。

5. 接入验证 #

Flutter 应用启动后,DEBUG CONSOLE 中返回 [INFO][AlibabaCloudRUM]: alibabacloud_rum_flutter_plugin initialized successfully 即表示 SDK 接入成功。示例如下:

flutter: [2024-05-27 16:43:39][INFO][AlibabaCloudRUM]: alibabacloud_rum_flutter_plugin initialized successfully

Flutter SDK 日志控制 #

通过 AlibabaCloudRUM().setDebuggable(bool debuggable) 控制 Flutter/Dart 层的详细诊断日志,默认值为 false:

debuggable verbose debug info warn error
true 打印 打印 打印 打印 打印
false(默认) 不打印 不打印 打印 打印 打印
final rum = AlibabaCloudRUM();
rum.setDebuggable(true); // 开启所有级别的 Flutter SDK 日志
await rum.start(MyApp());

rum.setDebuggable(false); // 恢复仅打印 info/warn/error

该接口同步生效,可以在 start() / initialize() 前调用,也可以在运行时反复切换;重复初始化不会重置已设置的值。Debug、Profile、Release 构建遵守相同规则。升级后默认不再输出 verbose/debug;排查问题需要详细日志时,请显式调用 setDebuggable(true)。

正常逐请求、逐页面的事件、模型和指标使用 debug/verbose;少量启动及功能状态使用 info,参数校验和局部降级使用 warn,操作失败及其错误堆栈使用 error。

此开关仅控制 Flutter/Dart 层的 SDK 诊断日志,不向 Native 下发配置。setDumpError 仍独立控制额外错误 dump;RUM 采集上报、setCustomLog 业务日志上报和 Dart Self Monitor 均不受此开关影响。

Action 自动采集 #

在应用根 Widget 中使用 AlibabaCloudActionCapture 包裹 MaterialApp:

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AlibabaCloudActionCapture(
      child: MaterialApp(
        home: const HomePage(),
      ),
    );
  }
}

如果需要为指定 Widget 设置稳定的 Action 描述和自定义属性,使用 ActionAnnotation:

ActionAnnotation(
  description: '提交订单',
  attributes: const {
    'page': 'checkout',
    'business_action': 'submit_order',
  },
  child: ElevatedButton(
    onPressed: submitOrder,
    child: const Text('提交'),
  ),
)

description 会优先于 Widget 子树中的 Text 或 Semantics 文案。attributes 的值必须可被 jsonEncode 编码,且不应包含密码、Token 或个人信息等敏感数据。

Dart Self Monitor #

Self Monitor 只采集进入既有统一异常回调、且可高置信度归因到插件自有代码的 Dart 异常,复用 Native SDK 的 /rum/monitor 通道。App、用户 callback 和 Flutter framework 异常不镜像到该通道;已被内部捕获并吞掉的异常不在采集范围内。

// 默认开启。仅控制 Dart 采集,不修改 Native Self Monitor 开关。
AlibabaCloudRUM().setSelfMonitorEnabled(false);

使用 Dart Self Monitor 时,需要同时集成提供 Self Monitor Integration API 的配套原生 SDK,并在宿主中完成原生 SDK 初始化。

Self Monitor 不提供业务自定义日志/metric 上报 API。内部提交成功只表示 Native producer 已接管,不保证网络送达;上下文按事件时 Native 已生效的 session/view 绑定,无法确认时不回退到当前页面。

Self Monitor Bridge 的 log 只允许 level、type、content 和可选 stack,禁止 attributes(包括空对象和 null),携带该字段返回 rejected/invalid_payload。Dart 的 SHA-256 fingerprint 仅用于内部去重,不上传,也不改名写入其它字段。timestamp 是事件产生时的 epoch 毫秒值,编码和发送保留该值。业务 RUM 的属性及 Native 已有的顶层 crash evidence、iOS metric 行为保持原有契约。

Native SDK 集成 #

Flutter 项目在集成 Alibaba Cloud RUM SDK 时,除了需要集成 Flutter 插件之外,还需要分别集成 Android、iOS SDK。您可以参考下面的文档集成:

Flutter API 说明 #

API 说明
start 启动Flutter插件
setDebuggable 开关 Flutter SDK 详细日志;默认关闭,保留 info/warn/error
setUserName 设置用户名称
setCustomEvent 设置自定义事件
setCustomException 设置自定义异常
setSelfMonitorEnabled 控制 Dart Self Monitor 采集;默认开启,需配套原生 SDK
AlibabaCloudActionCapture 自动采集 Flutter 用户操作
ActionAnnotation 为操作设置自定义描述和属性
GestureCaptureInfo 描述自定义 Widget 的采集方式
CustomGestureElementCapture 自定义 Widget 识别回调
2
likes
95
points
818
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

The AlibabaCloud RUM Flutter plugin working with SDK for Android and iOS, assists in measuring the performance of the Flutter application.

Homepage

License

MIT (license)

Dependencies

crypto, dio, flutter, meta, stack_trace, uuid

More

Packages that depend on alibabacloud_rum_flutter_plugin

Packages that implement alibabacloud_rum_flutter_plugin