ARMS用户体验监控提供一系列SDK配置项,让您能够通过设置参数来满足额外需求。本文介绍Flutter应用常用的SDK配置。
启动配置
start
方法是AlibabaCloudRUM Flutter 插件的核心启动方法,负责初始化整个 Flutter 插件监控系统并启动应用程序。
Future<void> start(Widget topLevelWidget, {Function()? beforeRunApp}) async
参数 | 说明 | 参数限制 | 失败结果 |
topLevelWidget | Flutter的根Widget | 非空 | 接口调用失败 |
beforeRunApp | 回调函数,在 | 可选,如果设置了该参数,则必须在该回调函数中主动调用 | - |
示例:
AlibabaCloudRUM().start(
// 根 Widget
MyApp(),
beforeRunApp: () async => {
// 在当前函数结束前,必须要调用下面这个方法
WidgetsFlutterBinding.ensureInitialized(),
// 其他业务逻辑
// ...
},
);
打印错误信息
当SDK捕获到Flutter异常时,会默认调用FlutterError.dumpErrorToConsole
输出错误信息到控制台,您可以通过setDumpError
方法开启或关闭。
void setDumpError(bool enable)
参数 | 说明 | 参数限制 | 失败结果 |
enable | 设置是否输出错误信息到控制台。 | 取值:
| - |
示例:
// 禁止输出错误信息到控制台
AlibabaCloudRUM().setDumpError(false);
Flutter错误回调
由于Flutter对错误的监控无法逐层传递,导致AlibabaCloudRUM插件对同步、异步接口进行监控后,应用内原有的错误监听会失效。因此,Flutter插件提供了统一的错误回调接口。
void onRUMErrorCallback(bool callback(Object? error, StackTrace? stack, bool isAsync))
回调函数入参:
参数 | 类型 | 说明 |
error | Object | 错误原因。 |
stack | StackTrace | 可选,错误堆栈。 |
isAsync | Bool | 可选,是否为异步错误。 |
回调函数返回值:
类型 | 说明 |
Bool | 是否继续处理错误。
|
示例:
AlibabaCloudRUM().onRUMErrorCallback((error, stack, isAsync) {
// 处理error事件
// ...
// logger.d('debuggg error: $error, stack: $stack');
// 返回true,让SDK上报该错误
return true;
});
自定义用户名称
SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。
Future<void> setUserName(String userName)
参数 | 说明 | 参数限制 | 失败结果 |
userName | 用户名称标识 | 字符串可为null或空串。 字符串小于等于256,且不包含特殊字符,只允许数字、字母、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、英文半角连接号(-)、英文半角句号(.)和@。 | 接口调用失败,当次设置无效。 |
示例:
AlibabaCloudRUM().setUserName("xxxxx");
自定义用户扩展信息
SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。
设置用户扩展信息,为覆写模式,调用该方法会导致历史设置的用户扩展信息被覆盖。
Future<void> setUserExtraInfo(Map<String, dynamic> extraInfo) async
参数
说明
参数限制
失败结果
extraInfo
用户扩展信息
Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。
接口调用失败,当次设置无效
示例:
AlibabaCloudRUM().setUserExtraInfo({"shopId": "xxxxx", "shopName": "yyyyy"});
追加用户扩展信息,追加模式。
Future<void> addUserExtraInfo(Map<String, dynamic> extraInfo) async
参数
说明
参数限制
失败结果
extraInfo
用户扩展信息
Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。
接口调用失败,当次设置无效
示例:
AlibabaCloudRUM().addUserExtraInfo({"userId": "11111111"});
自定义全局扩展信息
SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。
设置全局扩展信息,为覆写模式,调用该方法会导致历史设置的用户扩展信息被覆盖。
Future<void> setExtraInfo(Map<String, dynamic> extraInfo) async
参数
说明
参数限制
失败结果
extraInfo
全局扩展信息
Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。
接口调用失败,当次设置无效
示例:
AlibabaCloudRUM().setExtraInfo({"global_key": "global_value", "global_key2": "global_value2"});
追加全局扩展信息,追加模式。
Future<void> addExtraInfo(Map<String, dynamic> extraInfo) async
参数
说明
参数限制
失败结果
extraInfo
全局扩展信息
Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。
接口调用失败,当次设置无效
示例:
AlibabaCloudRUM().addExtraInfo({"global_userId": "2222222222"});
自定义异常
调用自定义异常接口,并传入相应的参数,可完成自定义异常数据的统计功能。
Future<void> setCustomException(String exceptionType, String causedBy, String errorDump)
参数 | 说明 | 参数限制 | 失败结果 |
exceptionType | 异常类型(必要) | 字符串长度大于0且小于等于256。 | 接口调用失败,当次设置无效。 |
causedBy | 异常原因(必要) | 字符串小于等于512,超长会截取。 | 不涉及 |
errorDump | 异常信息(可选) | 字符串可为null或空串。 字符串小于等于10000,超长会截取。 | 不涉及 |
示例:
AlibabaCloudRUM().setCustomException("custom exception type",
"caused by customer",
"Custom error dump");
自定义事件
SDK支持上报自定义事件。调用相应的接口,并传入相应的参数,可完成自定义事件数据的统计功能。
Future<void> setCustomEvent(String name, {String? group, String? snapshots, double? value, Map<String, String>? attributes})
参数 | 说明 | 参数限制 | 失败结果 |
name | 事件名称(必要) | 字符串小于等于512,超长会截取。 | 接口调用失败,当次设置无效。 |
group | 事件分组(可选) | 字符串可为null或空串。 字符串小于等于256,超长会截取。 | 不涉及 |
snapshots | 事件快照(可选) | 字符串可为null或空串。 字符串小于等于7000,超长截取。 | 不涉及 |
value | 事件值(可选) | Double类型。 | 不涉及 |
attributes | kv存储信息(可选) | 转JSON后长度在7000字符以内。 | 不涉及 |
示例:
AlibabaCloudRUM().setCustomEvent("search_shop",
group: "shop",
snapshots: 'Search: ${search.toString()}',
value: 1,
attributes: {"search": "xxxxx"});
自定义日志
SDK支持上报自定义日志信息。调用相应的接口,并传入相应的参数,可完成自定义日志数据的统计功能。
Future<void> setCustomLog(String logInfo, {String? name, String? snapshots, String? level, Map<String, String>? attributes})
参数 | 说明 | 参数限制 | 失败结果 |
logInfo | 日志信息(必要) | 字符串长度大于0且小于等于10000,超长截取。 | 接口调用失败,当次设置无效 |
name | 日志名称(可选) | 字符串长度大于0且小于等于256 | 不涉及 |
snapshots | 日志快照(可选) | 字符串可为null或空串。 字符串小于等于7000,超长会截取。 | 不涉及 |
level | 日志等级(可选) | 字符串长度大于0且小于等于256,默认为INFO。 | 不涉及 |
attributes | 日志附加信息(可选) | Map可为空或空集。 转JSON后,字符串长度与logInfo共享,否则接口调用失败。 | 不涉及 |
示例:
AlibabaCloudRUM().setCustomLog("2024-08-20 14:00:05 Print shopinfo info.",
name: "shop",
snapshots: 'Shop: ${shop.toString()}',
level: "DEBUG",
attributes: {"shopId": "xxxxx", "shopName": "yyyyy"});