SDK配置参考

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

应用环境

仅可使用预置的枚举值:

  • 0:NONE无环境配置

  • 1:PROD线上环境

  • 2:GRAY灰度环境

  • 3:PRE预发环境

  • 4:DAILY日常环境

  • 5:LOCAL本地环境

接口调用失败,当次设置无效。

示例:

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);