ARMS用户体验监控提供一系列SDK配置项,让您能够通过设置参数来满足额外需求。本文介绍鸿蒙(HarmonyOS)应用常用的SDK配置。
启动配置接口
启动配置类的接口需通过链式调用方式随AlibabaCloudRum.withAppID("<your app_id>").start(this.context.getApplicationContext())
一同配置,且需要在调用start
函数之前、调用withAppID
函数之后进行相关配置,在start
函数后配置无效,可同时配置多项。
自定义APP版本
自定义设备App版本号后,SDK将会上报此版本号,不再使用默认获取的版本号。
withAppVersion(version: string):AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
version | 自定义的版本号 | 字符串长度大于0,小于等于64。 | 接口调用失败,当次设置无效。 |
示例:
AlibabaCloudRum.withAppID("<#AppID#>")
.withConfigAddress("<#ConfigAddr#>")
.withAppVersion("custom app version")
.start(this.context.getApplicationContext());
设置应用环境
区分应用的环境。
withAppEnvironment(environment: AppEnvironment):AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
environment | 应用环境 | 仅可使用预置的枚举值:
| 接口调用失败,当次设置无效。 |
示例:
import {AppEnvironment} from '@alibabacloud_rum/harmony_sdk'
AlibabaCloudRum.withAppID("<#AppID#>")
.withConfigAddress("<#ConfigAddr#>")
.withAppEnvironment(AppEnvironment.NONE)
// .withAppEnvironment(AppEnvironment.PROD)
// .withAppEnvironment(AppEnvironment.GRAY)
// .withAppEnvironment(AppEnvironment.PRE)
// .withAppEnvironment(AppEnvironment.DAILY)
// .withAppEnvironment(AppEnvironment.LOCAL)
.start(this.context.getApplicationContext());
自定义冷启动结束时间
是否使用自定义冷启动结束时间。
withUseCustomLaunch(used: boolean):AlibabaCloudRum
参数 | 说明 |
used | Boolean类型。 true:使用自定义冷启动结束 false:不使用自定义冷启动结束时间 |
示例:
AlibabaCloudRum.withAppID("<#AppID#>")
.withConfigAddress("<#ConfigAddr#>")
.withUseCustomLaunch(true)
.start(this.context.getApplicationContext());
设置SDK自身请求Header
本接口用于设置在SDK自身发起的网络请求中添加自定义请求头。
withSDKRequestHeaders(headers: Map<string, string>): AliababCloudRum
参数 | 说明 | 失败结果 |
headers | 要设置的请求头键值对。 最多设置64个,Key长度不超过256个字符,Value长度不超过512个字符。 | Key、Value超过长度限制则单条数据无效。 |
示例:
const headers:Map<string,string> = new Map();
headers.set("headerKey1","headerValue1");
headers.set("headerKey2","headerValue2");
headers.set("headerKey3","headerValue3");
AlibabaCloudRum.withAppID("<#AppID#>")
.withConfigAddress("<#ConfigAddr#>")
.withSDKRequestHeaders(headers)
.start(this.context.getApplicationContext());
设置用户渠道ID
区分应用发布的渠道。
withChannelID(channelID: string): AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
channelID | 自定义的渠道号 | 字符串长度大于0,小于等于256。 | 接口调用失败,当次设置无效 |
示例:
AlibabaCloudRum.withAppID("<#AppID#>")
.withConfigAddress("<#ConfigAddr#>")
.withChannelID("custom channelID")
.start(this.context.getApplicationContext());
设置设备ID
自定义设备ID。
withDeviceID(deviceID: string): AlibabaCloudRum
参数 | 说明 | 参数限制 | 失败结果 |
deviceID | 自定义设备ID | 字符串长度大于0,小于等于256。 | 接口调用失败,当次设置无效。 |
示例:
AlibabaCloudRum.withAppID("<#AppID#>")
.withConfigAddress("<#ConfigAddr#>")
.withDeviceID("custom channelID")
.start(this.context.getApplicationContext());
数据获取接口
获取设备ID
如果在SDK启动时设置了withDeviceID接口,那么会返回自定义的设备ID。
static getDeviceID(): string
示例:
const deviceID = AlibabaCloudRum.getDeviceID();
console.log("ORSDK: "+deviceID);
获取当前SDK版本
获取当前SDK版本。
static getSdkVersion(): string
示例:
const sdkVersion = AlibabaCloudRum.getSdkVersion();
console.log("ORSDK: "+sdkVersion);
自定义信息设置接口
自定义用户名称
SDK支持设置与用户相关的信息,从而完成性能数据与实际用户相关联的需求场景。
setUserName(userName: string);
参数 | 说明 | 参数限制 | 失败结果 |
userName | 用户名称标识 | 字符串可为空或空串。 字符串小于等于256,且不包含特殊字符,只支持数字、字母、中文、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、英文半角连接号(-)、英文半角句号(.)、星号(*)、感叹号(!)、@和#。 | 接口调用失败,当次设置无效。 |
示例:
AlibabaCloudRum.setUserID("testName");
自定义异常
调用接口并传入相应参数,可完成自定义异常数据的统计功能。
static setCustomException(error: Error); //推荐使用,直接将 Exception 或 Throwable 对象传入即可
参数 | 说明 | 参数限制 | 失败结果 |
throwable | 异常对象 | 系统抛出的异常对象,非空。 | 接口调用失败,当次设置无效。 |
示例:
try {
throw new Error("Test");
} catch (err) {
AlibabaCloudRum.setCustomException(err);
}
更为灵活的重载配置如下,可用于业务型异常上报,对应参数可填充符合参数限制的任意内容,控制台直接展示。
static setCustomException(error: Error); //推荐使用,直接将 Exception 或 Throwable 对象传入即可
参数 | 说明 | 参数限制 | 失败结果 |
exceptionType | 异常类型(必要) | 字符串长度大于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);