ARMS用户体验监控提供一系列SDK配置项,让您能够通过设置参数来满足额外需求。本文介绍鸿蒙(HarmonyOS)应用常用的SDK配置。
启动配置接口
启动配置类的接口需通过链式调用方式与AlibabaCloudRum.withAppID("${your_appId}").withConfigAddress("${your_configAddress}").start(this.context.getApplicationContext())
一同配置,且需要在调用start
函数之前、调用withAppID
函数之后进行相关配置,在start
函数后配置无效,可同时配置多项。
自定义APP版本
自定义设备App版本号后,SDK将会上报此版本号,不再使用默认获取的版本号。
withAppVersion(appVersion: string):AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
appVersion | 自定义的版本号 | 字符串长度大于0,小于等于64。 | 当次设置无效 |
示例:
AlibabaCloudRum.withAppID("${your_appId}")
.withConfigAddress("${your_configAddress}")
.withAppVersion("${your_appVersion}")
.start(this.context.getApplicationContext());
自定义应用环境
区分应用的环境。
withAppEnvironment(environment: string):AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
environment | 应用环境 | 字符串长度大于0,小于等于64。 | 当次设置无效 |
示例:
import {AppEnvironment} from '@alibabacloud_rum/harmony_sdk'
AlibabaCloudRum.withAppID("${your_appId}")
.withConfigAddress("${your_configAddress}")
.withAppEnvironment("${your_appEnvironment}")
.start(this.context.getApplicationContext());
自定义应用包名
设置应用包名字段。
withAppBundleName(bundleName: string):AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
bundleName | 应用包名 | 字符串长度大于0,小于等于64。 | 当次设置无效 |
代码示例:
import {AppEnvironment} from '@alibabacloud_rum/harmony_sdk'
AlibabaCloudRum.withAppID("${your_appId}")
.withConfigAddress("${your_configAddress}")
.withAppBundleName("${your_appBundleName}")
.start(this.context.getApplicationContext());
设置用户渠道ID
区分应用发布的渠道。
withChannelID(channelID: string): AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
channelID | 自定义的渠道号 | 字符串长度大于0,小于等于256。 | 接口调用失败,当次设置无效 |
示例:
AlibabaCloudRum.withAppID("${your_appId}")
.withConfigAddress("${your_configAddress}")
.withChannelID("${your_channelID}")
.start(this.context.getApplicationContext());
设置设备ID
自定义设备ID。
withDeviceID(deviceID: string): AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
deviceID | 自定义设备ID | 字符串长度大于0,小于等于256。 | 接口调用失败,当次设置无效。 |
示例:
AlibabaCloudRum.withAppID("${your_appId}")
.withConfigAddress("${your_configAddress}")
.withDeviceID("${your_deviceId}")
.start(this.context.getApplicationContext());
数据获取接口
获取设备ID
如果在SDK启动时设置了withDeviceID接口,那么会返回自定义的设备ID。
static getDeviceID(): string
示例:
const deviceID = AlibabaCloudRum.getDeviceID();
console.log("ARSDK: "+deviceID);
自定义信息设置接口
自定义用户名称
SDK支持设置与用户相关的信息,从而完成性能数据与实际用户相关联的需求场景。
static setUserName(userName: string);
参数 | 说明 | 参数限制 | 失败结果 |
userName | 用户名称标识 | 字符串可为空或空串。 字符串小于等于256,且不包含特殊字符,只支持数字、字母、中文、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、英文半角连接号(-)、英文半角句号(.)、星号(*)、感叹号(!)、@和#。 | 接口调用失败,当次设置无效。 |
示例:
AlibabaCloudRum.setUserName("testName");
自定义用户扩展信息
SDK 支持设置更加详细的用户附加信息,从而完成数据分析与实际用户相关联的需求场景。
static setUserExtraInfo(attributes: Map<string, Object>);
参数 | 说明 | 参数限制 | 失败结果 |
extraInfo | 用户附加信息 | Map中KV最多64对,超过则保留其中64个。 Key长度小于256,超过则该Key无效,Key不包含特殊字符(只允许数字、字母、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、连接号(-)、英文半角句号(.)、@,空或空串无效)。 Value小于512,超过则截取。 | 接口调用失败,当次设置无效。 |
示例:
const userInfo = new Map<string, Object>();
userInfo.set("aliasName", "lemonx");
userInfo.set("userRegion", "hangzhou");
userInfo.set("type", "svip");
AlibabaCloudRum.setUserExtraInfo(userInfo);
自定义全局属性
自定义全局属性设置后,新产生的数据会自动携带该业务属性信息,用于分析与业务属性相关联的需求。
static setExtraInfo(attributes: Map<string, Object>);
参数 | 说明 | 参数限制 | 失败结果 |
attributes | 属性信息 | Map中KV最多64对,超过则保留其中64个。 Key长度小于256,超过则该Key无效,Key不包含特殊字符(只允许数字、字母、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、连接号(-)、英文半角句号(.)、@,空或空串无效)。 Value小于512,超过则截取。 | 当次设置无效。 |
示例:
const properties = new Map<string, Object>();
properties.set("param1", "test1");
properties.set("param2", "test2");
AlibabaCloudRum.setExtraInfo(userInfo);
追加全局属性。
static addExtraInfo(key:string, value: Object);
参数 | 说明 | 参数限制 | 失败结果 |
key | 追加的key | Key长度小于256,超过则该Key无效,Key不包含特殊字符(只允许数字、字母、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、连接号(-)、英文半角句号(.)、@,空或空串无效)。 | 当次设置无效。 |
value | key对应的value | Value小于512,超过则截取。 | 当次设置无效。 |
示例:
AlibabaCloudRum.addExtraInfo("param3", "test3");
调用 setExtraInfo 方法时会清空历史设置的属性信息。如您需要追加新的属性信息,建议您通过 addExtraInfo 方法。
自定义异常
传参类型为 Error:调用接口并传入相应参数,可完成自定义异常数据的统计功能。
static setCustomException(error: Error); //直接将 Exception 或 Throwable 对象传入即可
参数
说明
参数限制
失败结果
error
异常对象
系统抛出的异常对象,非空。
接口调用失败,当次设置无效。
示例:
try { throw new Error("Test"); } catch (err) { AlibabaCloudRum.setCustomException(err); }
传参类型为自定义参数:更为灵活的重载配置如下,可用于业务型异常上报,对应参数可填充符合参数限制的任意内容,控制台直接展示。
static setCustomException(errorType: string, causeBy?: string, errorDump?: string);
参数
说明
参数限制
失败结果
errorType
异常类型(必要)
字符串长度大于0,小于等于256。
接口调用失败,当次设置无效。
causeBy
异常原因
字符串可为空或空串。
字符串小于等于512,超长截取。
-
errorDump
异常信息
字符串可为空或空串。
字符串小于等于10000,超长截取。
-
示例:
try { throw new Error("Test"); } catch (err) { if (err instanceof Error) { AlibabaCloudRum.setCustomException(err.name, err.message, err.stack); } }
自定义事件
调用接口并传入相应参数,可完成自定义事件数据统计功能。
static setCustomEvent(eventName: string, group?: string, value?: number, snapshots?: string, attributes?: Map<string, string>)
参数 | 说明 | 参数限制 | 失败结果 |
eventName | 事件名称(必要) | 字符串长度小于等于256,超长截取。 | 接口调用失败,当次设置无效。 |
group | 事件分组 | 字符串可为空或空串。 字符串小于等于256,超长截取。 | - |
value | 事件值 | Double类型。 | - |
snapshots | 事件快照 | 字符串可为空或空串。 字符串小于等于7000,超长截取。 | - |
attributes | kv存储信息 | 可为空,转JSON后长度在7000字符以内。 | - |
示例:
AlibabaCloudRum.setCustomEvent("注册");
const info = new Map<string, string>();
info.set("eventNumber","10001");
info.set("eventName", "alibaba");
info.set("eventXX", "xxx");
AlibabaCloudRum.setCustomEvent("登录失败", "事件分组", undefined, "事件快照", info);
自定义日志
调用接口并传入相应参数,可完成自定义日志数据统计功能。
static setCustomLog(content: string, name: string, snapshots?: string, level?: string, attributes?: Map<string, Object>);
参数 | 说明 | 参数限制 | 失败结果 |
content | 日志信息(必要) | 字符串长度大于0小于等于10000,超长截取。 | 接口调用失败,当次设置无效。 |
name | 日志名称 | 字符串长度大于0且小于等于256。 | 接口调用失败,当次设置无效。 |
snapshots | 日志快照 | 字符串可为空或空串。 字符串小于等于7000,超长截取。 | - |
level | 日志等级 | 字符串长度大于0且小于等于256,默认为INFO。 | - |
attributes | 日志附加信息 | Map可为空或空集。 转JSON后,字符串长度与content共享,否则接口调用失败。 | - |
示例:
AlibabaCloudRum.setCustomLog("日志内容1");
const logInfo = new Map<string, string>();
logInfo.set("logXX","xxx");
AlibabaCloudRum.setCustomEvent("日志内容2", "日志名称", "日志快照", "ERROR", logInfo);