查看原文
其他

iOS 性能优化:用电池和性能 API 识别性能趋势

红纸 老司机技术 2022-08-26

作者:红纸,iOS 开发者,目前就职于微医。


Sessions: https://developer.apple.com/videos/play/wwdc2020/10057/

概览

电池与性能数据是我们关注 APP 性能的两大指标。在 iOS 13 的时候,苹果爸爸发布了 MetricKit[1] 来帮助我们收集用户的电池消耗以及性能相关的数据。先前我们只能通过 App 内监听、Xcode Organizer 来访问这些数据。在此次的 WWDC20 中,苹果发布了一系列 API 来协助我们更好的访问,他们帮助我们统计到的数据。

Xcode Organizer

在去年的 WWDC19,苹果在 Xcode 11 中引入了新功能,用于分析电池消耗跟性能的相关分析工具,我们可以通过 Xcode Organizer 的可视化工具,查看苹果爸爸帮我们汇总的电源,性能和 I/O 指标。(详细内容可以参考 Improving Battery Life and Performance[2]

使用 App Store Connect API 提高自动化

每次都去点开 Xcode 工具着实麻烦,也无法集成到现有的公司内的监控系统当中。在本次 WWDC20 发布了一系列 API ,其中包含有 4 个新增 API,使我们能够以编程方式访问收集到的指标和诊断数据,我们可以自己使用这些数据进行一些自定义分析。除此之外,无需我们做其他任何配置,苹果将给我们在 API 的返回值中,加入了他们对于该数据的见解。

如果想了解更多的关于 API 可以参考 WWDC20 10004 使用 App Store Connect API 提高自动化[3]

4 个新增 API

  • 通过 application id 获取诊断数据(包含智能建议)。
GET /v1/apps/{id}/perfPowerMetrics
  • 通过 build id 获取诊断数据(不包含智能建议)。
GET /v1/builds/{id}/perfPowerMetrics
  • 通过 build id 获取诊断签名,使用诊断签名,苹果将相似的问题进行分组在一起。例如,将类似的磁盘异常信息汇总在一起,以生成磁盘写入签名。
GET /v1/builds/{id}/diagnosticSignatures
  • 根据 Diagnostic Signatures ID 获取具体的 Log 信息。
GET /v1/diagnosticSignatures/{id}/logs

诊断数据接口结果展示

GET /v1/apps/{id}/perfPowerMetrics

其返回值数据包含:

  1. 每个应用的数据信息(Metric Data)

  2. 智能分析的结果建议,这些智能的结果建议,会使用历史版本的指标数据进行智能化分析,自动标记需要关注的重点,此项功能在回归测试中将起到很好的参考作用

请求结果
MetricData
Smart Insights

诊断签名接口结果展示

GET /v1/builds/{id}/diagnosticSignatures

其中包含有:

  • 诊断签名数据类型(例如,图片当中的数据是磁盘写入相关的签名类型)

  • 关联的详细数据 log url 地址

详细 Logs 数据展示

GET /v1/diagnosticSignatures/{id}/logs

其中包含有:

  • 签名设备的基础信息

  • 调用堆栈信息,有助于我们去分析调用路径情况

设备基础信息
堆栈调用信息

总结

本 Session 比较简单,提供了 4 个全新 API 方便我们将诊断数据拉取到本地,进行自主分析,在本次 WWDC20 中,可以看到苹果支持了越来越多的 API,方便开发者去定制自己的自动化流程。

推荐阅读

✨ iOS 性能优化:使用 MetricKit 2.0 收集数据

✨ iOS 性能优化:优化 App 启动速度

关注我们

我们是「老司机技术周报」,每周会发布一份关于 iOS 的周报,也会定期分享一些和 iOS 相关的技术。欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2020」,领取学习大礼包。

支持作者

这篇文章的内容来自于 《WWDC20 内参》。在这里给大家推荐一下这个专栏,专栏目前已经创作了 108 篇文章,只需要 29.9 元。点击【阅读原文】,就可以购买继续阅读 ~

WWDC 内参 系列是由老司机周报、知识小集合以及 SwiftGG 几个技术组织发起的。已经做了几年了,口碑一直不错。 主要是针对每年的 WWDC 的内容,做一次精选,并号召一群一线互联网的 iOS 开发者,结合自己的实际开发经验、苹果文档和视频内容做二次创作。

参考资料

[1]

MetricKit: https://developer.apple.com/documentation/xcode/improving_your_app_s_performance

[2]

Improving Battery Life and Performance: https://developer.apple.com/videos/play/wwdc2019/417/

[3]

WWDC20 10004 使用 App Store Connect API 提高自动化: https://xiaozhuanlan.com/topic/8510792463


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存