SDK配置参考

更新时间:
复制为 MD 格式

用户体验监控提供了一系列SDK配置项,让您能够通过设置参数来满足额外需求。本文介绍iOS应用常用的SDK配置。

启动配置

设置 Endpoint 地址

每个应用都需要关联对应的Endpoint地址,该接口需要在调用start:前设置。

@objc
public static func setEndpoint(_ endpoint: String)

参数

说明

参数限制

失败结果

endpoint

Endpoint 地址

字符串长度大于0且小于2083

接口调用失败,SDK 初始化失败

设置 Workspace 地址

每个应用都需要关联对应的Workspace,该接口需要在调用start:前设置。

@objc
public static func setWorkspace(_ workspace: String)

参数

说明

参数限制

失败结果

workspace

Workspace 地址

字符串长度大于0且小于2083

接口调用失败,SDK 初始化失败

启动接口

您需要调用start: 方法初始化 SDK。

@objc(start:)
public static func start(_ serviceId: String)

参数

说明

参数限制

失败结果

serviceId

ServiceId

由用户体验监控平台生成的应用唯一ID

接口调用失败,SDK 初始化失败

设置自定义设备ID

可以通过此方法设置自定义设备ID,设置成功后,SDK将不再使用默认获取的设备ID。

@objc
public static func setDeviceID(_ deviceID: String)

参数

说明

参数限制

失败结果

deviceID

自定义的设备ID

字符串长度大于0且小于256,且不包含特殊字符(仅支持字母、数字、冒号、空格、下划线_、链接符-、英文句号、@)

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

设置自定义App版本号

通过此方法设置了自定义App版本号,那么SDK将会上报此版本号,不再使用默认获取的版本号。

@objc
public static func setAppVersion(_ appVersion: String)

参数

说明

参数限制

失败结果

appVersion

自定义的App版本号

字符串长度大于0且小于64。

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

设置用户渠道ID

区分应用发布的渠道。

@objc
public static func setChannelID(_ channelID: String)

参数

说明

参数限制

失败结果

channelID

自定义的渠道号

字符串长度大于0且小于256。

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

设置应用环境

区分应用的环境。通过此方法可以指定应用的环境,如LOCAL、DAILY、PROD等。

@objc
public static func setEnvironment(_ env: Env)

参数

说明

参数限制

失败结果

env

应用环境的枚举值。需要在setConfigAddress方法之后、start方法之前调用。

Env枚举值:

  • LOCAL:本地

  • DAILY:日常

  • PRE:预发

  • GRAY:灰度

  • PROD(默认):线上

  • NONE:无

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

自定义信息

自定义用户名称

SDK支持设置与用户相关的信息,从而完成与实际用户相关联的数据分析需求场景。

@objc
public static func setUserName(_ userID: String)

参数

说明

参数限制

失败结果

userID

用户名称标识

字符串可为null或空串。

字符串小于等于256,且不包含特殊字符,只允许数字、字母、英文半角冒号(:)、空格、正斜线(/)、下划线(_)、英文半角连接号(-)、英文半角句号(.)和@。

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

自定义用户扩展信息

SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。

@objc(setUserExtraInfo:)
public static func setUserExtraInfo(_ extraInfo: [String: AnyObject])

参数

说明

参数限制

失败结果

extraInfo

用户扩展信息

Map可为空或空集。

JSON后长度在7000字符以内,否则接口调用失败。

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

自定义全局属性

自定义全局属性设置后,新产生的数据会自动携带该业务属性信息,用于分析与业务属性相关联的需求。

@objc(setExtraInfo:)
public static func setExtraInfo(_ extraInfo: [String: AnyObject])

@objc(addExtraInfo:)
public static func addExtraInfo(_ extraInfo: [String: AnyObject])

参数

说明

参数限制

失败结果

extraInfo

属性信息

Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。

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

说明

调用 setExtraInfo 方法时会清空历史设置的属性信息。如您需要追加新的属性信息,建议您通过 addExtraInfo 方法。

自定义异常

调用自定义异常接口,并传入相应的参数,可完成自定义异常数据的统计功能。

@objc(setCustomException:causeBy:errorDump:)
public static func setCustomException(_ exceptionType: String, _ causeBy: String, _ errorDump: String)

参数

说明

参数限制

失败结果

exceptionType

异常类型(必要)

字符串长度大于0且小于等于256。

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

causeBy

异常原因

字符串可为null或空串。

字符串小于等于512,超长会截取。

不涉及

errorDump

异常信息

字符串可为null或空串。

字符串小于等于10000,超长会截取。

不涉及

自定义事件

SDK支持上报自定义事件。调用相应的接口,并传入相应的参数,可完成自定义事件数据的统计功能。

@objc(setCustomEvent:)
public static func setCustomEvent(_ name: String)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

@objc(setCustomEvent:group:)
public static func setCustomEvent(_ name: String, group: String? = nil)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

@objc(setCustomEvent:group:snapshots:)
public static func setCustomEvent(_ name: String, group: String? = nil, snapshots: String? = nil)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

snapshots

事件快照

字符串可为nil空串

字符串小于等于7000,超长会截取。

不涉及

@objc(setCustomEvent:group:value:)
public static func setCustomEvent(_ name: String, group: String? = nil, value: Double = 0)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

value

事件值

double类型

不涉及

@objc(setCustomEvent:group:info:)
public static func setCustomEvent(_ name: String, group: String? = nil, info: [String: String]? = nil)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

info

事件附加信息

Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。

不涉及

@objc(setCustomEvent:group:snapshots:value:)
public static func setCustomEvent(_ name: String, group: String? = nil, snapshots: String? = nil, value: Double = 0) 

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256。

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

snapshots

事件快照

字符串可为nil空串

字符串小于等于7000,超长会截取。

不涉及

value

事件值

double类型。

不涉及

@objc(setCustomEvent:group:snapshots:info:)
public static func setCustomEvent(_ name: String, group: String? = nil, snapshots: String? = nil, info: [String: String]? = nil)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

snapshots

事件快照

字符串可为nil空串

字符串小于等于7000,超长会截取。

不涉及

info

事件附加信息

Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。

不涉及

@objc(setCustomEvent:group:value:info:)
public static func setCustomEvent(_ name: String, group: String? = nil, value: Double = 0, info: [String: String]? = nil) 

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

value

事件值

double类型

不涉及

info

事件附加信息

Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。

不涉及

@objc(setCustomEvent:group:snapshots:value:info:)
public static func setCustomEvent(_ name: String, group: String? = nil, snapshots: String? = nil, value: Double = 0, info: [String: String]? = nil)

参数

说明

参数限制

失败结果

name

事件名称(必要)

字符串长度大于0且小于等于256

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

group

事件分组

字符串可为nil空串

字符串小于等于256,超长会截取。

不涉及

snapshots

事件快照

字符串可为nil空串

字符串小于等于7000,超长会截取。

不涉及

value

事件值

double类型

不涉及

info

事件附加信息

Map可为空或空集。转JSON后长度在7000字符以内,否则接口调用失败。

不涉及

自定义日志

SDK支持上报自定义日志信息。调用相应的接口,并传入相应的参数,可完成自定义日志数据的统计功能。

@objc(setCustomLog:)
public static func setCustomLog(_ logInfo: String)

参数

说明

参数限制

失败结果

logInfo

日志信息(必要)

字符串长度大于0且小于等于10000,超长会被截取。

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

@objc(setCustomLog:name:)
public static func setCustomLog(_ logInfo: String, name: String? = nil) 

参数

说明

参数限制

失败结果

logInfo

日志信息(必要)

字符串长度大于0且小于等于10000,超长会被截取。

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

name

日志名称

字符串长度大于0且小于等于256。

不涉及

@objc(setCustomLog:name:snapshots:)
public static func setCustomLog(_ logInfo: String, name: String? = nil, snapshots: String? = "") 

参数

说明

参数限制

失败结果

logInfo

日志信息(必要)

字符串长度大于0且小于等于10000,超长会被截取。

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

name

日志名称

字符串长度大于0且小于等于256。

不涉及

snapshots

日志快照

字符串可为null或空串。

字符串小于等于7000,超长会截取。

不涉及

@objc(setCustomLog:name:snapshots:level:info:)
public static func setCustomLog(_ logInfo: String, name: String? = nil, snapshots: String? = "", level: String? = "INFO", info: [String: String]? = nil)

参数

说明

参数限制

失败结果

logInfo

日志信息(必要)

字符串长度大于0且小于等于10000,超长会被截取。

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

name

日志名称

字符串长度大于0且小于等于256。

不涉及

snapshots

日志快照

字符串可为null或空串。

字符串小于等于7000,超长会截取。

不涉及

level

日志等级

字符串长度大于0且小于等于256,默认为INFO。

不涉及

info

日志附加信息

Map可为空或空集。

JSON后,字符串长度与logInfo共享,否则接口调用失败。

不涉及

自定义资源

SDK支持上报自定义网络资源请求数据,可以记录 HTTP/HTTPS 等类型请求的详细信息,包括请求状态、性能指标和链路追踪信息。SDK 提供了两个重载版本,分别适用于基础场景和高级场景。

基础场景

@objc(setCustomResource:success:url:method:statusCode:errorMessage:)
public static func setCustomResource(_ type: String, success: Bool, url: String, method: String, statusCode: Int, errorMessage: String?) -> Bool

参数

类型

说明

参数限制

type

String

资源类型,例如:"js""media""api"

字符串长度大于0且小于等于64,超长截取。

success

Bool

请求是否成功

true,成功;false,失败。

url

String

请求的完整 URL 地址

字符串长度大于0且小于等于1024,超长截取。

method

String

HTTP 请求方法,如:"GET""POST""PUT""DELETE"

字符串长度大于0且小于等于24,超长截取。

statusCode

Int

HTTP 响应状态码

HTTP 状态码,如:200、404、500等。

errorMessage

String?

错误信息描述,仅在请求失败时填写

字符串长度大于0且小于等于256,超长截取。可为nil

返回值Bool - 接口调用是否成功,true 表示调用成功,false 表示调用失败(如 SDK 未初始化或参数错误)。

使用示例

// Swift - 成功的 GET 请求
let result = AlibabaCloudRUM.setCustomResource(
    "AP",
    success: true,
    url: "https://api.example.com/users",
    method: "GET",
    statusCode: 200,
    errorMessage: nil
)

// Swift - 失败的 POST 请求
let result2 = AlibabaCloudRUM.setCustomResource(
    "API",
    success: false,
    url: "https://api.example.com/login",
    method: "POST",
    statusCode: 401,
    errorMessage: "Unauthorized access"
)
// Objective-C - 成功的 GET 请求
BOOL result = [AlibabaCloudRUM setCustomResource:@"API"
                                         success:YES
                                             url:@"https://api.example.com/users"
                                          method:@"GET"
                                      statusCode:200
                                    errorMessage:nil];

// Objective-C - 失败的 POST 请求
BOOL result2 = [AlibabaCloudRUM setCustomResource:@"API"
                                          success:NO
                                              url:@"https://api.example.com/login"
                                           method:@"POST"
                                       statusCode:401
                                     errorMessage:@"Unauthorized access"];

高级场景

高级场景支持性能和链路追踪的配置。

    @objc(setCustomResource:success:url:method:statusCode:errorMessage:provider:tracing:measure:)
    public static func setCustomResource(_ type: String, success: Bool, url: String, method: String, statusCode: Int, errorMessage: String?, provider: String?, tracing: AlibabaCloudTracingContext?, measure: AlibabaCloudResourceMeasure?) -> Bool

参数

类型

参数说明

参数限制

type

String

资源类型

字符串长度大于0且小于等于64,超长截取。

success

Bool

请求是否成功

true,成功;false,失败。

url

String

请求的完整 URL 地址

字符串长度大于0且小于等于1024,超长截取。

method

String

HTTP 请求方法

字符串长度大于0且小于等于24,超长截取。

statusCode

Int

HTTP 响应状态码

HTTP 状态码,如:200、404、500等。

errorMessage

String?

错误信息描述

字符串长度大于0且小于等于256,超长截取。可为nil

provider

String?

服务提供商标识,如:"CDN"

字符串长度大于0且小于等于256,超长截取。可为nil

tracing

AlibabaCloudTracingContext?

链路追踪上下文信息

AlibabaCloudTracingContext 类型,可为nil

measure

AlibabaCloudResourceMeasure?

资源性能指标

AlibabaCloudResourceMeasure 类型,可为nil

返回值Bool - 接口调用是否成功,true 表示调用成功,false 表示调用失败。

使用示例

// Swift - 创建性能指标对象
let measure = AlibabaCloudResourceMeasure.measure()
measure.duration = 850
measure.size = 10240
measure.dnsDuration = 30
measure.connectDuration = 80
measure.sslDuration = 120
measure.firstByteDuration = 250
measure.downloadDuration = 370

// 创建链路追踪上下文
let traceId = AlibabaCloudTraceGenerator.generateTraceId(.SkywalkingV3)
let spanId = AlibabaCloudTraceGenerator.generateTraceId(.SkywalkingV3)
let tracing = AlibabaCloudTracingContext(traceId: traceId, spanId: spanId, tracingProtocol: .SkywalkingV3)

// 上报完整的资源信息
let result = AlibabaCloudRUM.setCustomResource(
  "HTTPS",
  success: true,
  url: "https://api.example.com/v2/data",
  method: "POST",
  statusCode: 200,
  errorMessage: nil,
  provider: "Aliyun",
  tracing: tracing,
  measure: measure
)
// Objective-C - 创建性能指标对象
AlibabaCloudResourceMeasure *measure = [AlibabaCloudResourceMeasure measure];
measure.duration = 850;
measure.size = 10240;
measure.dnsDuration = 30;
measure.connectDuration = 80;
measure.sslDuration = 120;
measure.firstByteDuration = 250;
measure.downloadDuration = 370;

// 创建链路追踪上下文
NSString *traceId = [AlibabaCloudTracingGenerator generateTraceId:AlibabaCloudTracingProtocolW3C];
NSString *spanId = [AlibabaCloudTracingGenerator generateSpanId:AlibabaCloudTracingProtocolW3C];
AlibabaCloudTracingContext *tracing = [AlibabaCloudTracingContext contextWithTraceId:traceId
                                                                              spanId:spanId
                                                                            protocol:AlibabaCloudTracingProtocolW3C
];

// 上报完整的资源信息
BOOL result = [AlibabaCloudRUM setCustomResource:@"HTTPS"
                                         success:YES
                                             url:@"https://api.example.com/v2/data"
                                          method:@"POST"
                                      statusCode:200
                                    errorMessage:nil
                                        provider:@"Aliyun"
                                         tracing:tracing
                                         measure:measure];

辅助类型说明

AlibabaCloudTracingContext

用于分布式链路追踪的上下文信息,支持 W3C Trace Context 和 SkyWalking V3 协议。

创建方法

// Swift - 生成 TraceId 和 SpanId
let traceId = AlibabaCloudTracingGenerator.generateTraceId(.SkywalkingV3)
let spanId = AlibabaCloudTracingGenerator.generateSpanId(.SkywalkingV3)

// Swift - 生成 Trace 上下文
let tracingContext = AlibabaCloudTracingContext(traceId: traceId, spanId: spanId, protocol: .SkywalkingV3)
// Objective-C - 生成 TraceId 和 SpanId
NSString *traceId = [AlibabaCloudTracingGenerator generateTraceId:AlibabaCloudTracingProtocolW3C];
NSString *spanId = [AlibabaCloudTracingGenerator generateSpanId:AlibabaCloudTracingProtocolW3C];

// Objective-C - 生成上下文
AlibabaCloudTracingContext *context = [AlibabaCloudTracingContext contextWithTraceId:traceId
                                                                              spanId:spanId
                                                                     tracingProtocol:AlibabaCloudTracingProtocolW3C
];

支持的协议

  • W3C:W3C Trace Context 标准协议。

  • SkywalkingV3:Apache SkyWalking V3 协议。

AlibabaCloudResourceMeasure

用于记录网络请求性能指标。

属性名

类型

说明

duration

NSUInteger

总耗时(毫秒)

size

NSUInteger

响应数据大小(字节)

connectDuration

NSUInteger

TCP 连接耗时(毫秒)

sslDuration

NSUInteger

SSL/TLS 握手耗时(毫秒)

dnsDuration

NSUInteger

DNS 解析耗时(毫秒)

redirectDuration

NSUInteger

重定向耗时(毫秒)

firstByteDuration

NSUInteger

首字节耗时(毫秒)

downloadDuration

NSUInteger

下载耗时(毫秒)

创建方法

// Swift
let measure = AlibabaCloudResourceMeasure.measure()
measure.duration = 1200
measure.size = 5120
measure.dnsDuration = 50
measure.connectDuration = 100
measure.sslDuration = 150
measure.firstByteDuration = 300
measure.downloadDuration = 600
// Objective-C
AlibabaCloudResourceMeasure *measure = [AlibabaCloudResourceMeasure measure];
measure.duration = 1200;
measure.size = 5120;
measure.dnsDuration = 50;
measure.connectDuration = 100;
measure.sslDuration = 150;
measure.firstByteDuration = 300;
measure.downloadDuration = 600;

注意事项

  1. 返回值检查:建议检查方法返回值,如果返回 false,说明接口调用失败。

  2. 异步上报:接口调用成功(返回 true)仅表示 SDK 已接受该数据,实际数据上报为异步操作。