MetricKit是苹果提供的App内应用性能检测框架,覆盖了CPU、GPU、磁盘以及运行数据等。
MetricKit适用于iOS 13.0+的设备。它会在一天结束后,将过去24小时搜集的性能指标和问题诊断报告归集在一起,然后在下一次启动 App 后,在 delegate 的回调中提供给我们。
实际使用时除了获取到过去24小时的数据,24小时之前未被收集过的数据也会一并返回。
MXMetricPayload
属性 | 类型 | 含义 | 补充说明 |
---|---|---|---|
latestApplicationVersion | NSString | 收集此数据时的最高版本信息 | 考虑到APP会有不同的版本,MXMetricPayload会携带一个latestApplicationVersion的字符串,此字段会和数据统计时项目配置中的Version版本保持一致。 语义上latest并不是表示APP的最新版本,而是说,在此24小时数据采集的区间内,如果你从1.0版本升级到了1.1版本,也就是当前payload的数据是两个版本的混合数据,latestApplicationVersion应该是显示的1.1而不是1.0 |
includesMultipleApplicationVersions | BOOL | 当前24小时数据包是否包含多个版本 | |
timeStampBegin | NSDate | 数据采集的开始时间 | |
timeStampEnd | NSDate | 数据采集的结束时间 | |
cpuMetrics | MXCPUMetric | CPU指标 | 累计CPU运行耗时 累计CPU指令数 |
gpuMetrics | MXGPUMetric | GPU指标 | 累计GPU运行耗时 |
cellularConditionMetrics | MXCellularConditionMetric | 蜂窝网络指标 | 信号格数直方图 |
applicationTimeMetrics | MXAppRunTimeMetric | 运行时间指标 | 累计前台运行时长 累计后台运行时长 累计后台播放音乐时长 累计后台使用定位时长 |
locationActivityMetrics | MXLocationActivityMetric | 定位指标 | 累计最佳精度定位时长 累计最佳精度导航时长 累计10米精度定位时长 累计100米精度定位时长 累计1000米精度定位时长 累计3000米精度定位时长 |
networkTransferMetrics | MXNetworkTransferMetric | 网络指标 | 累计wifi上传数据量 累计wifi下载数据量 累计流量上传数据量 累计流量下载数据量 |
applicationLaunchMetrics | MXAppLaunchMetric | APP启动指标 | 冷启直方图 热起直方图 |
applicationResponsivenessMetrics | MXAppResponsivenessMetric | APP挂起指标 | 不响应用户交互时间直方图 |
diskIOMetrics | MXDiskIOMetric | 磁盘IO指标 | 累计写入磁盘或其他长期存储的数据量 |
memoryMetrics | MXMemoryMetric | 内存指标 | 最高内存使用量 suspended状态下平均内存使用量 |
displayMetrics | MXDisplayMetric | 显示指标 | 平均像素亮度 |
animationMetrics | MXAnimationMetric | UIScrollView掉帧指标 | iOS 14 新增 scrollView滑动掉帧时间比例 |
applicationExitMetrics | MXAppExitMetric | App退出指标 | iOS 14 新增 累计前台正常退出次数 累计前台内存资源受限退出次数 (应该就是OOM,未验证) 累计前台BadAccess退出次数 累计前台不正常退出次数(包含未捕获异常、调用Abort函数、发出abort信号) 累计前台非法指令退出次数 累计前台WatchDog杀死退出次数 累计后台正常退出次数 累计后台内存资源受限退出次数 (应该就是OOM,未验证) 累计后台CPU使用受限退出次数 累计后台为了其他应用腾内存而杀死本应用退出次数 累计后台BadAccess退出次数 累计后台不正常退出次数(包含未捕获异常、调用Abort函数、发出abort信号) 累计后台非法指令退出次数 累计后台WatchDog杀死退出次数 累计后台suspend状态下访问锁定资源文件杀死退出次数 累计后台任务超时杀死退出次数 |
signpostMetrics | NSArray |
自选代码段运行指标 | 自选段名 自选段分类 运行总次数 运行耗时直方图 累计CPU时长 平均内存 累计磁盘写入 |
metaData | MXMetaData | 基本信息 | 区域 操作系统版本 设备类型 App版本 指令集 |
MXDiagnosticPayload (iOS 14 新增)
属性 | 类型 | 含义 | 补充说明 |
---|---|---|---|
cpuExceptionDiagnostics | NSArray |
CPU异常诊断 | 调用栈 异常时CPU使用时长 采样次数 |
diskWriteExceptionDiagnostics | NSArray |
磁盘写入异常诊断 | 调用栈 异常时总磁盘写入量 |
hangDiagnostics | NSArray |
挂起诊断 | 调用栈 挂起时长 |
crashDiagnostics | NSArray |
崩溃诊断 | 调用栈 崩溃原因 虚拟内存区域信息 exceptionType exceptionCode signal |
timeStampBegin | NSDate | 诊断开始时间 |
收集到终端的Metric后可以针对性分析各项指标。
(未完待续)
Comments