全部產品
Search
文件中心

Application Real-Time Monitoring Service:SDK配置參考

更新時間:Jan 22, 2026

使用者體驗監控提供了一系列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 已接受該資料,實際資料上報為非同步作業。