除了 Method Swizzling 之外,SDK 还利用系统特性和框架的标准 API 来采集应用在运行时的关键事件,主要是应用状态变化和卡顿监控。
iOS 应用从启动到终止过程(包含前后台切换),系统通过事件通知中心对外暴露事件状态变化,SDK 通过注册这些事件完成应用状态事件的采集。为了准确采集应用的状态变化,SDK 按不同场景分别处理不同事件:
- 应用进入前台事件:SDK 会对 willEnterForeground 和 didBecomeActive 事件处理。
- 应用进入后台事件:SDK 会对 willResignActive 和 didEnterBackground 事件处理。
为了统一监控这些事件,SDK 提供了 AppLifeCycle 类对这些事件进行管理,在简化事件处理的同时也能保证调用时序。
除此之外,SDK 还对 RunLoop 进行了监听,通过检查 RunLoop 运行状态实现卡顿监控事件的采集。
通过以上方式,SDK 支持:应用启动耗时采集(冷启动、热启动耗时指标)、卡顿事件采集(同时支持耗时堆栈的提取)、网络状态的采集(网络类型采集)。




