帮你快速理解、总结文档立即下载

SDK 初始化

最近更新时间:2026-09-28 17:02:02
我的收藏
本文将为您介绍如何初始化用户体验监控 iOS SDK。

操作步骤

参考以下代码初始化用户体验监控 iOS SDK,在 App 启动后初始化监控框架,一般推荐在 application:didFinishLaunchingWithOptions:delegate 中进行初始化。
1. 在 AppDelegate 实现文件中引入对应的头文件。
Swift
Objective-C
import TDEMiOSSDK
@import TDEMiOSSDK;
2. 创建配置对象并启动 SDK。id / url 为必填,缺失会导致初始化失败(invalidConfiguration);userId / deviceId 为业务必填,缺失不会导致初始化失败,但会使控制台的用户、设备维度无法聚合(version 已自动取 CFBundleShortVersionString,可不填)。其余配置项均有默认值,按需补充即可,详见 完整配置项说明。
Swift
Objective-C
let configuration = TDEMConfiguration(
id: "<project-key>", // 必填:项目标识
url: URL(string: "https://dem.rumt-zh.com")! // 必填:采集服务基础地址(国内站)
)
configuration.version = "1.0.0" // 建议显式配置:默认取 CFBundleShortVersionString,回落 1.0.0
configuration.env = "production" // 运行环境,默认 production
configuration.userId = "<user-id>" // 必填:预置用户标识(用户维度聚合)
configuration.deviceId = "<device-id>" // 必填:设备标识(设备异常率统计)
configuration.debug = false // 可选:诊断日志开关,默认 false

TDEM.start(configuration: configuration)
// id 与 url 为必填:项目标识 / 采集服务基础地址(国内站)
TDEMConfiguration *configuration =
[[TDEMConfiguration alloc] initWithId:@"<project-key>"
url:[NSURL URLWithString:@"https://dem.rumt-zh.com"]];

configuration.version = @"1.0.0"; // 建议显式配置:默认取 CFBundleShortVersionString,回落 1.0.0
configuration.env = @"production"; // 运行环境,默认 production
configuration.userId = @"<user-id>"; // 必填:预置用户标识(用户维度聚合)
configuration.deviceId = @"<device-id>"; // 必填:设备标识(设备异常率统计)
configuration.debug = NO; // 可选:诊断日志开关,默认 NO

[TDEM startWithConfiguration:configuration];
初始化后即可自动采集崩溃、卡顿、启动、网络等数据,无需额外打点。用户行为监控(behavior)与会话回放(replay)默认关闭,需显式开启。
注意:
id 与 url 为必填。url 是采集服务基础地址,支持 http / https(生产环境请使用 HTTPS),SDK 会自行拼接具体协议端点。国内站填 https://dem.rumt-zh.com,详见 上报域名。
userId 与 deviceId 需一并传入。二者缺失不会导致初始化失败,但会使控制台无法按用户 / 设备维度聚合:userId 为空时该字段不会写入上报体;deviceId 为空或空白时上报字面量 not_set,设备异常率统计会失真。
设备 ID 非常重要,用户体验监控使用设备 ID 来计算设备异常率。请通过 TDEMConfiguration.deviceId 或 TDEM.setDeviceId(_:) 传入稳定的业务设备标识;未设置时上报 not_set,按设备维度的异常率统计会失真。SDK 不读取 IDFV 等系统标识,需由业务侧提供。
建议在用户授权个人信息保护规则后再初始化 SDK。
切勿把真实 project key、采集凭证或生产环境地址提交进代码仓库。

上报域名

请根据项目所在地域选择对应的上报域名。不同站点的数据相互隔离,跨站填写会导致数据无法入库。
站点
上报域名
国内站
https://dem.rumt-zh.com
新加坡站
https://dem.rumt-sg.com
美国站
https://dem.rumt-us.com
接入时填写站点根地址即可,无需拼接路径,SDK 会自行拼接具体协议端点。

完整配置项说明

以下为 TDEMConfiguration 的全部配置项,均需在 TDEM.start(configuration:) 之前设置。其中 id / url / userId / deviceId 需按要求传入,其余为可选配置。

基础配置

下表中 id / url / userId / deviceId 为必填,其余为可选(均有默认值或可不配置)。
id 与 url 由 SDK 强制校验,缺失会直接初始化失败。
userId、deviceId 为业务必填项,缺失虽不影响 SDK 运行,但会导致控制台对应的用户 / 设备维度无法聚合。
version 已默认取 CFBundleShortVersionString,通常无需手工传入。
配置项
说明
id
必填。项目标识,对应请求体中的 project_key。为空会导致初始化失败(invalidConfiguration)。
url
必填。采集服务基础地址,需为 http / https 且带 host,SDK 会自行拼接具体协议端点(如 /api/v1/config、/api/v1/collect/events)。国内站填 https://dem.rumt-zh.com,详见「上报域名」。
version
应用版本号,对应上报体的 app.version,用于版本对比与版本分布分析。默认自动取 CFBundleShortVersionString,取不到或为空时回落 1.0.0,因此可不手工传入;若业务版本号与 Bundle 版本不一致,建议显式配置。
env
运行环境标识,允许值 production / development / gray / pre / daily / local / test / others,默认 production;未知值(含 staging)归一为 others。
userId
必填。业务用户标识,对应上报体的 context.user_id;不填时该字段不会写入上报体,控制台无法按用户维度聚合分析。也可在初始化后调用 TDEM.setUser 动态设置。
deviceId
必填。宿主提供的设备标识(String?)。由业务侧设置,SDK 不会自动生成 IDFV 或其他系统设备标识;未设置或传空白时,上报字面量 not_set,按设备维度的异常率统计会失真。也可在运行期调用 TDEM.setDeviceId(_:) 设置、TDEM.clearDeviceId() 清除。
defaultTags
全局默认标签([String: String]),注入每个事件。也可通过 TDEM.setTags 增删。
debug
诊断日志开关,默认 false。开启后输出脱敏的本地诊断日志,不打印事件正文。
requestCaptureEnabled
是否抓取事件与回放上报的 HTTP 请求 / 响应原始报文用于本地排查,默认 false。与 debug 相互独立,仅供测试环境使用。
requestCaptureDirectory
原始报文落盘目录。必须与 requestCaptureEnabled 同时设置才生效,二者缺一则不抓取。
初始化时 SDK 会先请求 POST {url}/api/v1/config 拉取远程配置,仅在远程返回 enabled: true 且通过采样时才启动采集;拉取失败时沿用本地缓存,无缓存则保守不上报(进入 suppressed 状态)。需要感知结算结果时,可实现 TDEMInitListener 并通过 TDEM.addInitListener 注册。

崩溃监控(crash,默认开启)

配置项
说明
enabled
总开关,默认 true。开启后自动捕获崩溃,并接收 TDEM.captureException 上报的已捕获异常。

网络监控(network,默认开启)

配置项
说明
enabled
总开关,默认 true。
reportAllSuccessfulRequests
是否上报全部成功请求,默认 false(仅慢成功与错误 / 取消上报)。
slowThresholdMs
慢请求阈值(ms),默认 1000。
allowedHosts
域名白名单。非空时仅采集命中白名单的请求;匹配规则为精确域名或其子域(填 example.com 可命中 a.example.com)。
deniedHosts
域名黑名单。仅在 allowedHosts 为空时生效,命中即不采集。
additionalSensitiveHeaderNames
在默认敏感头之外追加需要脱敏的请求头名(不区分大小写)。
SDK 自身与采集服务之间的请求(与 url 同源)会被自动排除,不会产生递归上报。

启动监控(launch,默认开启)

配置项
说明
enabled
是否启用,默认 true。
manualEndEnabled
是否等待业务调用 TDEM.endLaunch() 才封口,默认 false(首个页面展示后自动上报)。
冷启动 / 温启动的慢启动判定阈值由 SDK 内部维护(默认4000ms / 2000ms),接入方不可修改。

卡顿监控(stall,默认开启)

配置项
说明
enabled
总开关,默认 true。
stallThresholdMs
卡顿判定阈值(ms),默认1000,取值需大于0且小于5000,否则初始化失败(stall_invalid_configuration)。
除卡顿外,SDK 同时检测主线程无响应(阈值5000ms,内部固定),两类事件都会采集代表性堆栈与掉帧指标。

用户行为监控(behavior,默认关闭)

配置项
说明
enabled
总开关,默认 false(合规整改起默认 opt-in,需显式开启)。

用户挣扎检测(struggle,默认开启)

配置项
说明
enabled
总开关,默认 true。
clickRulesEnabled
是否检测 rage / dead / error click,默认 true。
formRulesEnabled
是否检测 long focus,默认 true。
navigationRulesEnabled
是否检测 back-forward,默认 true。
规则阈值(rage 1s/5次、dead/error 3s、long focus 20s、back-forward 10s/3次)与 Android 对齐,SDK 内部写死,接入方不可修改。如需精确忽略某个控件的 dead click,可调用 TDEMBehaviorMetadata.setDeadClickIgnored(_:for:)。

Session Replay 会话录屏(replay,默认关闭)

配置项
说明
enabled
总开关,默认 false。
sessionSampleRate
全量会话采样率(0.0–1.0),默认 0.1。
errorSampleRate
错误触发采样率(0.0–1.0),默认 1.0。
quality
录制质量预设(TDEMReplayQuality.low / .medium / .high),默认 low。
maskAllText
是否遮罩所有文本内容,默认 false。
maskAllImages
是否遮罩所有图片内容,默认 false。
默认仅遮罩输入类控件与显式标记为敏感的内容;也可通过 TDEMPrivacyMetadata.setReplayMasking(_:for:) 对单个 View 强制遮罩或放开。sessionSampleRate、errorSampleRate 超出 [0, 1] 会导致初始化失败(replay_invalid_configuration)。