这是 MetricKit 的 API 参考,用于通过用户选择分享的分析数据,在设备上收集聚合的现场性能指标与诊断信息。数据每日送达一次(开发环境可按需立即送达)。适用场景包括:在应用中注册 MetricKit 订阅者、解析 MXMetricPayload 或 MXDiagnosticPayload、符号化 MXCallStackTree 崩溃数据、理解后台退出原因(jetsam、watchdog),以及将 MetricKit 与现有崩溃报告器集成。
主要能力:MXMetricPayload 提供过去 24 小时的聚合指标,涵盖 CPU(累计 CPU 时间、CPU 指令数)、内存(峰值与平均挂起内存)、启动(首次绘制与恢复时间直方图)、应用退出、滚动卡顿率、磁盘 I/O、网络传输以及 signpost(可自定义埋点并读取时长直方图与总次数)。MXDiagnosticPayload(iOS 14+)提供崩溃、卡顿、磁盘写入异常与 CPU 异常诊断。MXCallStackTree 提供未符号化的调用栈 JSON,包含 binaryUUID、地址偏移、二进制名、地址、采样次数与子帧;需保留 dSYM 并用 atos 或崩溃报告服务完成符号化。MXBackgroundExitData 用于分析后台退出类型。
用法要点:通过 MXMetricManager.shared.add(self) 注册 NSObject 且实现 MXMetricManagerSubscriber 的订阅者,在应用生命周期早期注册,移除时调用 remove(self)。可将 payload.jsonRepresentation() 导出为 JSON 上传分析后端。iOS 15+ 可通过 Xcode 的 Debug > Simulate MetricKit Payloads 触发立即送达。
限制与注意事项:数据有 24 小时延迟,非实时调试;调用栈需符号化,必须保留 dSYM;仅覆盖选择「与 App 开发者共享」的用户;返回的是聚合计数与平均值而非逐用户轨迹;模拟器不工作,仅真机收集。功能可用性随 iOS 版本不同:基础指标 iOS 13+,诊断载荷 iOS 14+,卡顿诊断 iOS 14+,启动诊断 iOS 16+,开发环境即时送达 iOS 15+。文中提及卡顿诊断流程见 axiom-hang-diagnostics,一般性能剖析见 axiom-performance-profiling,内存调试见 axiom-memory-debugging。