为了有效应对移动端监控挑战,iOS RUM SDK 通过一个轻量化、模块化的架构,对应用的不同阶段进行 hook 和监听,以实现应用性能和稳定性的监控。整体架构自上而下分为四层:
- 公共接口层:提供对外公开的 API,用户通过 API 与 SDK 进行交互。
- SDK 管理层:管理 SDK 的各个模块、SDK 的启停等。
- 数据采集层:管理各个数据采集模块,实现数据采集细节,各个数据模块实现隔离。
- 基础核心层:支撑整个 SDK 的运行,提供时间同步、数据处理、配置管理等能力。
一个值得注意的设计是:在基础核心层,SDK 为了统一各个端的实现以及性能考虑,使用 C 实现了独立的跨平台数据处理和跨平台配置管理模块,使多端保持一致的数据持久化、数据发送、数据序列化、配置拉取和管理等逻辑。
在数据采集层,为了高效、精准、无侵入地采集各类事件,SDK 基于 Method Swizzling 技术和 iOS 系统平台特性与框架能力,构建了多样化的采集方案,主要包含三类:基于 Method Swizzling 的网络等数据采集、基于系统特性与框架能力的数据采集、以及崩溃异常数据的采集。




