SDK配置参考

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

用户附加信息

MapKV最多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

属性信息

MapKV最多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);