大多数浏览器和
Developer App 均支持流媒体播放。
-
用动力和性能 API 识别趋势
使用 Power and Performance Metrics and Diagnostics API,利用自定义团队检测界面、错误报告系统与其它自定义工作流程对你 app 的表现数据进行追踪。探索如何使用与 Xcode Power and Performance 分析工具相同的数据,迅速确定数据的增减趋势。学习如何利用诊断指征与日志(包括调用栈树)确定问题的优先度并进行调试。此外,你还将学习如何将此 API 融入你开发团队现有的工具之中,以求更快找出问题所在,为使用你 app 的用户提升全局体验。
资源
相关视频
WWDC22
WWDC21
WWDC20
-
下载
(你好 WWDC 2020)
大家好 欢迎参加 WWDC (用动力和性能 API 识别趋势) 大家好 我叫 Ashish 是一位 Apple 性能工具工程师 Yeounoh 待会儿也会加入进来 我们很高兴能和大家一起谈谈 新的 App Store Connect API 一个用来获取动力和性能数据的界面 开发者在构建优秀 app 方面 所做的出色工作 是用户整体软件使用体验的重要组成部分 确保良好用户体验的两个最重要方面 是优化 app 的动力和性能影响 在 Apple 我们坚定地 致力于为你提供可操作的工具 帮助你轻松确定需要关注的领域 在去年的 WWDC 2019 上 我们首次推出了 Xcode 11中一个新功能 提供了开箱即用的动力和性能分析 Xcode Organizer 允许你查看 综合动力、性能和 I/O 指标 帮助识别 app 中需要改进的地方 自那个版本发布以来 我们收到了很多请求 希望能够通过编程方式 访问同样的 Xcode 数据 我们听到的一个常见请求 是能够在自己的分析 和监测过程中使用这些数据 所以 我们非常兴奋地宣布 新的动力和性能 API 它将是将于今年晚些时候将要发布的 App Store Connect API 的一部分 强烈建议大家观看 《使用 App Store Connect API 扩展自动化》的视频 了解更多关于 App Store Connect 的信息 新的 API 允许你通过编程方式访问 Xcode 指标和诊断数据 允许你自行使用这些数据 我们还提供了 一个新的内置 Smart Insights 功能 可以轻而易举地识别 app 的 动力和性能热点 人们使用你的 app 时 我们从已授权的设备上 收集动力和性能数据 这些数据然后被聚合到我们的服务器上 通过 App Store Connect API 提供给你 你可以使用来自这个新的 API 的数据 构建高度定制化的分析工作流 以及通过仪表盘自动监控 app 的性能 在接下来的讲座中 我们将首先简要介绍一下这个新的 API 和它所提供的数据类型 接着 我们将介绍几个 访问相同聚合数据的例子 这些数据在 Xcode 和 Smart Insights 中推进动力和性能分析 最后 我们将进行现场演示 提取样本 app 的聚合指标、见解和诊断 以一个简短的总结结束
我们先来浏览一下这个 API 的概述 今年我们将提供四个新的 REST API 资源 让我们逐一查看各项资源
第一个 API 资源使用你的 app 的 ID 为你的 app 的最新版本 提供聚合指标和见解 Smart Insights 有助于识别 app 的热点 我们将在下一节更详细地讨论这些数据
第二个 API 资源 允许你下载特定 app 版本的指标 要获得这些数据 你需要提供 build ID 这个 ID 由 App Store Connect API 为特定 app 版本提供
接下来 你可以访问 特定 app 版本的顶级诊断签名 这些签名是用来对常见问题进行分组的 我们还建议你查看一下 今年的 Xcode Organizer 讲座 该讲座详细介绍了 如何通过 Xcode 访问相同的诊断数据 最后 你可以下载 与诊断签名对应的根本原因分析日志 这需要诊断签名 ID 作为 GET 请求的一部分 这个新的 API 可以总结如下 你可以将这四个端点 融入到你的分析工作流中 使用聚合指标、Smart Insights 以及诊断数据自动跟踪你的 app 足迹 现在 让我们来看几个例子 从聚合指标数据开始 通过这些 API 端点获取数据和见解 app 的动力和性能指标数据 是按每个独特的指标和设备类型聚合的 这些指标与现在 Xcode Organizer 中可用的指标完全相同 比如电池消耗、启动和写盘 新的 API 目前支持为所有 iPhone 和 iPad 设备组提供这些数据
如前所述 你需要使用 app ID 发出以下 GET 请求 以接收最新 app 版本的聚合指标和见解
这将返回一个结构式 JSON 字符串 其中包括两个主要部分 表现为产品数据和见解的聚合指标 让我们看一下样本指标 JSON
对于每个指标 比如挂起率 JSON 结构包含一些元数据 比如单位 对于每个单位、设备和指标组合 JSON 包含 50% 和 90% 的数值 最后 生成指标摘要 可供最多 8 个最新版本的 app 使用 如本示例 JSON 所示 你能使用这些数据 构建跨不同指标、设备和百分位数值的 高度定制化的动力和性能分析 但我们并没有止步于此 我们的团队更进一步 还能帮助你快速识别 你的 app 的动力和性能热点 无需进行自定义分析 我们很高兴 为你介绍新的 Smart Insights 功能 这些 Smart Insights 使用早期的指标数据 自动标记你的 app 中的主要热点 如果你想轻松跟踪该领域 顶级 app 的回归的话 此举特别有用 目前 这些见解 标志着指标值的回归和上升 JSON 的见解回应包含三个部分 见解分析版本、回归总结 以及受影响的设备和百分位数值列表
让我们了解一下样本见解的详细信息 突出显示的部分表示指标类型 和已确定回归的摘要 你可以使用这些摘要字符串 跟踪 app 的顶级回归 如这里所示 app 的启动时间 只对 90% 的 iPhone 用户回归 这样的见解可以帮助你采取更集中的行动 用以提高 app 的性能 填充部分 包含受影响的 百分位数值和设备的详细结构列表 第三部分包含元数据 例如最新的 app 版本 以及用于比较的以前的 app 版本列表 在本节的最后一部分中 我们来看看用于根本原因分析的诊断数据 现在请 Yeounoh 继续接下来的讲座 (诊断签名和日志) 谢谢 Ashish 大家好 我叫 Yeounoh 是 Apple 的性能工具工程师 除了指标和 Smart Insights 外 我们还提供诊断数据 来帮助你深入分析回归 动力和性能诊断分为两部分 首先 我们使用诊断签名 把类似的问题按组归类 例如 类似的写盘异常 被聚合在一起生成写盘签名 使用诊断签名 我们可以按问题分组进行根本原因分析 该 API 返回 app 版本中 最流行的顶层签名 如果提供一个顶层签名及其 ID 你可以获得相关的诊断日志和更多细节 要收到你的 app 版本的顶层签名 你需要从 App Store Connect API 中 使用 build ID 发出以下 GET 请求 今年 你可以从 Xcode 和 API 访问写盘诊断签名 回应包含数据中的顶层签名列表 每个签名都包含 一个唯一的签名 ID 和属性 从这些属性中 你可看出 这是一个写盘签名示例 签名字符串 是在 Xcode UI 中 表示调用堆栈的调用框架 权值为规范化的签名权值 表示该签名的相对重要性 它还提供了一个 URL 来获取诊断日志 可以看到 这个 URL 已经包含签名 ID 动力和性能诊断的第二部分 是诊断日志 它包含来自单个设备的匿名诊断细节 包括元数据信息 比如平台 OS 版本和设备类型 而且 日志还包含函数调用堆栈树 这对理解是什么 引起动力和性能热点极有帮助 诊断调用堆栈 JSON 结构 也与 MetricKit 共享 所以 请查看今年的 MetricKit 讲座 以了解更多 关于设备端动力和性能诊断的信息
获取诊断日志 需要以下带有签名 ID 的 GET 请求 这与我们 在诊断签名回应中看到的 URL 类型相同 回应包含诊断日志列表 每个日志都包含诊断元数据 其中包含设备类型 OS 版本和构建版本等信息 在本例中 日志是为写盘异常事件生成的 日志还附带调用堆栈 每个调用堆栈帧都包含原始帧 和解析帧信息 以及子帧列表 在根框架的子框架之后 可以遍历整个调用堆栈树结构 现在 我们进行一个演示 在该演示中 你将了解如何自行访问 API 以及如何使用今年晚些时候 将与 API 一起发布的示例脚本
在这个演示中 假设我是一位 名叫 MealPlanner 的 app 的开发者 这个 app 将帮助我规划饮食并保存食谱 在最新版本中 我们推出了一项新功能 即保存带有菜名的美味照片 现在 我可以使用动力和性能 API 来确保 app 用户不会碰到任何回归 要访问 API 我们首先需要生成一个 API 访问令牌
我将运行一个脚本来生成令牌 这需要使用 App Store Connect API 密钥
有了这个令牌后 就可用 MealPlanner app ID 访问性能动力指标资源了
正如你从这个回应中看到的 我们获得了见解以及产品数据 其格式与我们在讲座中见到的一样
产品数据包含大量聚合指标信息
那么 让我们来看看 Smart Insights 看是否存在回归
利用见解回归和其摘要字符串 我们可以看到 存在写盘回归 这个回归出现在所有使用 iPhone 的 用户中 50% 的人的最新 app 版本中
要想进一步研究这个问题 我们就得获取诊断日志 查看异常调用堆栈
首先 我将使用最新的 app 版本 构建 ID 请求顶层诊断签名
通过获得顶层写盘签名 及其相关 URL
我将请求在诊断日志上签名
诊断日志回应包含调用堆栈信息
这种调用栈结构对于机器处理非常有效
为了让我们能够查看原始的调用堆栈 我编写了一个样本代码 来解析和优质打印这些堆栈信息
样本脚本以编程方式访问 相同的诊断 API 资源 按回车键 我们就能从日志中得到原始调用堆栈
从底部查看调用函数框架
我发现添加带有名称的照片的新功能 将引起高负载写盘 I/O
通过跟踪堆栈踪迹 我可以找到源代码中的确切位置 来调试和优化实现
生成令牌和获取诊断数据的样本代码 将于今年晚些时候随 API 一起发布 所以 请查看样本代码 以快速入门 API 访问 总结一下这个演示 你可以使用 API 查看和监控聚合指标 使用 Smart Insights 来识别动力和性能回归
最后 使用诊断数据 对问题的根本原因进行分析
让我们简要重述一下今天讨论的内容
为改善动力和性能 我们推出了新的 App Store Connect API 使用这个新的 API 你就能和用 Xcode Organizer 一样 通过编程方式访问相同的指标和诊断数据 围绕动力和性能指标 构建定制的数据分析和监测系统 我们还介绍了 Smart Insights 可以帮助你识别指标中的关键趋势和回归 我们对这个新的 API 感到欢欣鼓舞 因为它适合你继续创建令人惊叹的 app 所以 恳请大家尝试一下 并把意见反馈给我们 谢谢
-
-
4:48 - Get metrics and insights for most recent app versions
GET /v1/apps/{id}/perfPowerMetrics
-
8:19 - Get top diagnostic signatures for released app versions
GET /v1/builds/{id}/diagnosticSignatures
-
9:42 - Get logs for a diagnostic signature
GET /v1/diagnosticSignatures/{id}/logs
-
11:19 - Access perfPowerMetrics for an app
curl -X GET -H "Authorization: Bearer ${JWT}" -H "Accept: application/vnd.apple.xcode-metrics+json,application/json" https://api.appstoreconnect.apple.com/v1/apps/${id}/perfPowerMetrics
-
12:23 - Access diagnosticSignatures for an app build
curl -X GET -H "Authorization: Bearer ${JWT}" -H "Accept: application/vnd.apple.xcode-metrics+json,application/json" https://api.appstoreconnect.apple.com/v1/builds/${id}/diagnosticSignatures
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。