大多数浏览器和
Developer App 均支持流媒体播放。
-
构建多设备训练 App
了解如何使用 HealthKit 让 iPhone 参与到基于 Apple Watch 的体能训练 App 中。我们将向你展示如何在设备之间使用骑行数据类型进行骑行镜像训练。此外,还将了解 iPad 版的 HealthKit。
资源
相关视频
WWDC23
WWDC21
WWDC20
-
下载
♪ 悦耳的器乐嘻哈 ♪ ♪ 你好 欢迎你 我是 Sirisha 是 HealthKit 团队的一名工程师 现在 App Store 中有数百个 健康和健身 App 帮助用户保持健康 针对所有这些 App HealthKit 提供了一个 集中式加密数据库 这样 你出色的 App 可以用聚合视图 向用户展示健康数据 现在 Workout API 是 HealthKit 提供的 最强大的 API 之一 我非常喜欢这些 API 针对今天的视频 我为 Apple Watch 创建了一个 样本骑行 App 以追踪我的骑行训练 为了更易于访问 我会把我的 iPhone 装在车把手上用作骑行电脑 这样 我就可以快速方便地查看 我的 Apple Watch 显示的实时指标 而不必把我的手从车把手上移开 HealthKit 引入新的 Workout API 用于在 Apple Watch 和 iPhone 之间控制和镜像 当前活动训练; 增加了新的数据类型 用于追踪骑行配速、功率、踏频和 功能阈值功率 即 FTP 升级对骑行训练的支持; 如果这还不够 现在 iPad 上也已搭载 HealthKit 和 Health App 你的顾客在 iPad 上 登录其 iCloud 帐户 将看到其健康数据已通过 HealthKit 同步到 iPad 上 试想一下 你可提供更丰富的 健康和训练后体验 今天 我将使用我的样本 App 来展示 如何将 Apple Watch 上 正在进行的某个训练 镜像到已配对的 iPhone 上 然后 我将添加一些代码来向你展示 如何收集新的骑行指标 并在设备之间同步该指标数据 最后 我将总结 在 iPad 上显示训练 所需的授权细节 让我们看看 Apple Watch、 iPhone 和 iPad 如何相互协作 打造出色的训练体验 在我的示例中 我正在 Apple Watch 上运行训练 我将一个训练作为一个集中式对象 来管理其生命周期: 启动、暂停和停止 如果你还不熟悉体能训练 请观看之前的讲座: “体能训练新方法” 和“为 Apple Watch 构建体能训练 App” 现在 为了从我的 iPhone 控制训练 我需要将这个训练 从 Apple Watch 传到 iPhone 为此 我将使用 HealthKit 新的镜像训练 API 被镜像的训练 在 Apple Watch 上启动时 如果 iPhone 上 App 没有运行 它将在后台启动 并显示这个训练 为接收这个训练 我的 iPhone App 需要准备好 因此 首先我将使用 healthStore 在 iPhone App 的启动序列中 设置一个处理器 这样 它就准备好接收 来自 Apple Watch 的训练 每次 iPhone App 在前台或后台启动时 我都会执行镜像启动处理器 以便接收从 Apple Watch 传来的当前活动训练 接着 我将创建一个训练配置, 其中活动类型为骑行 然后我将在 iPhone App 中 调用现成的 startWatchApp API 来启动已配对的 Apple Watch 上的 App 并传送训练配置 当我接收到 iPhone 传来的配置时 就可在 Apple Watch App 中创建一个训练 Apple Watch 上的训练 被称为主训练 而 iPhone 上的训练 被称为镜像训练 看起来是这样 当在 iPhone App 中 开始训练时 Apple Watch 上的 App 会启动 并使用 iPhone 发送的配置 到目前为止 一切顺利 使用这个 API 十分方便 因为 HealthKit 负责让主训练和 镜像训练保持同步 例如 当 Apple Watch 上的 主训练暂停时 iPhone 上的镜像训练也会暂停 除了将当前活动训练 复制到 iPhone 之外 HealthKit 还提供了一个新的 API 用于在两个设备之间 交换相关的训练数据 支持开始和结束健身活动 以及生成事件 好的 现在主训练已经准备好 iPhone 也准备好接收处理器 我将调用 startMirroringToCompanionDevice 从 Apple Watch 开始镜像 并启动主训练 一旦在 Apple Watch 上 调用 startMirroring HealthKit 就会在后台 启动相应的 iPhone App 给 App 10 秒钟时间 来启动一个实时活动 并调用处理器来开始镜像 太棒了 我们已经 在 Apple Watch 上启动了训练 并且镜像到了 iPhone 上 现在 我将向你展示 训练状态如何在设备之间传递 在我的示例 App 中 我想向用户显示 训练的状态 例如训练是否正在运行、暂停等 因此我将在 Apple Watch 和 iPhone 上设置训练代理 以监测训练状态更新和 生成的事件 请注意 务必对 iPhone App 中 被检索的镜像训练进行引用 在 Apple Watch 上调用 startActivity 会启动主训练 并将训练状态改为进行中 Apple Watch 中设置了 主训练的训练代理 因此该状态更新将被传递到 Apple Watch App iPhone 上的 App 也可通过镜像训练代理 获得该状态更新 将一个当前活动训练传入 iPhone 并监测某个训练的状态变化 就是如此简单 所以它看起来是这样的 当在 Apple Watch 上 开始一次训练时 iPhone 和 Apple Watch 上的暂停按钮 都被激活 表示训练正在运行 除了在主训练和镜像训练之间 同步训练状态之外 我还可以生成和发送 暂停和继续等事件 当在 Apple Watch 上 暂停训练时 Apple Watch App 和 iPhone 上的镜像训练 都会通过其训练代理 收到暂停事件的相关通知 这看起来是这样的 当在 Apple Watch 上 暂停训练时 两台设备的继续 按钮同时被激活 现在 iPhone 上有一个训练 我也可以从 iPhone 上控制训练 在 iPhone 上恢复镜像训练时 Apple Watch 上的主训练代理 会收到状态更改的通知 镜像训练代理会收到一个继续事件 接着 我想向你展示 如何利用 HealthKit 今年引入的 新的骑行功能 包括新的数据类型 比如骑行配速、功率、踏频; 直接连接到 提供这些类型数据的 蓝牙设备的功能 类似于心率监测器收集心率数据 并写入健康数据库; 最后 Apple Watch 上的 HealthKit 可根据从这些蓝牙设备收集的数据 自动计算和保存 FTP 我的自行车有一个 收集功率和步频的功率计 将其与我的 Apple Watch 配对 传感器将数据 写入 Apple Watch 我想扩展我的 App 以便在我骑行时将该数据发送到 iPhone 上进行显示 为此 我将首先使用 推荐的 workoutBuilder API 中的 beginCollection 开始收集骑行的指标数据 然后我将使用 sendData(toRemoteWorkoutSession) API 发送数据 要发送骑行指标 我将 Apple Watch 上 蓝牙传感器接收到的配速、踏频和 功率数据进行打包 并对主训练调用 sendData(toRemoteWorkoutSession) 然后 iPhone 上的 镜像训练代理 将收到 didReceiveDataFromRemoteDevice 调用 以及数据包 我可以解包 并在 iPhone 上显示 这是我的示例 App 从 Apple Watch 发送骑行指标时的样子 以及在 iPhone App 中如何显示 使用 sendData(toRemoteWorkoutSession) 我还可以反过来 从 iPhone 向 Apple Watch 发送数据 在我的示例中 我想在训练中追踪记录我的饮水量 以便我之后进行分析 为我下一次骑行制定更好的 水分补充计划 为此 我将 iPhone 镜像训练中 记录的饮水量打包并发送到 Apple Watch 主训练的代理方法 didReceiveDataFromRemoteDevice 被调用并带有打包数据 我可解包并将该数据 保存在我的 Apple Watch 上 这是示例 App 的样子 当我轻点按钮 来计算我喝的每一盎司水时 数据会发送到 Apple Watch 并在 Apple Watch 显示总饮水量 现在我可在训练中 随时停止对训练的镜像 只需调用 stopMirroringToCompanionDevice API 调用此方法将停止 向对应设备发送数据 镜像训练的 didDisconnectFromRemoteDeviceWithError 代理方法 也会被调用 当我完成骑行时 我将结束主训练 完成构建 并将其保存在 Apple Watch 上 在 Apple Watch 上 保存训练样本后 样本数据会同步到我的其他设备 现在 可以显示包含详细信息图表和 可视化效果的训练后摘要 太棒了!下一步是要在 iPad 上运行的 App 中 呈现训练后摘要 因为我刚刚保存在 Apple Watch 上的训练 会自动同步到 iPad 上 我只需进行少量的修改 即可可视化我的训练数据 如同其他访问 HealthKit 数据的 App iPad 上的 App 首先需要获得用户授权 当 App 请求授权时 如有需要 将显示授权表单 在 iPad 上 你的 App 可能有多个窗口场景 因此 确保在适当的场景上 显示授权表单是很重要的 为此 在我的 App 中 我将首先导入 HealthKitUI 框架 我将指定希望查看的数据的类型 特别是活动能量、 骑行配速、功率、踏频、 心率和训练样本 然后 由于 构建了一个 SwiftUI App 我将使用 HealthKitUI 框架中的 新的 healthDataAccessRequest 视图修饰符 并传递我想共享和读取的数据类型 以及触发器 将触发器设置为 true 后 我的 App 中会呈现授权表单 对于 UIKit App 你将设置 healthStores.authorizationViewControllerPresenter 属性 然后请求授权 要共享和读取的类型 现在 授权问题已经解决 让我们在 iPad 上 查看我的训练情况 太神奇了! 现在我可以访问我的训练数据 并利用 iPad 的屏幕尺寸 为我的 App 创建更丰富的体验 是不是超级简单? 现在你可从 iPhone 开始和控制训练 从 Apple Watch 收集并 同步丰富的骑行数据 最后在 iPad 上查看训练详情 总结一下 一定要更新你的 App 以支持 iPad 上的授权 如你的健身 App 涉及骑行 你可添加对新数据类型的支持 如你在构建可在 iPhone 和 Apple Watch 上运行的体能训练 App 请查看新的镜像训练 API 以开始在两个设备之间 镜像数据和控制状态 如有需要 你的 App 可使用同步标识符和版本号 来保持你的服务器 和用户设备之间的数据一致性 最后 请将你的反馈意见告诉我们 我们希望支持你所需要的功能 让你继续开发将健康 传播到全世界的优秀 App 感谢你的观看 ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。