1

我正在尝试为使用 Apple Watch 在我的应用程序上进行锻炼创造良好的用户体验。我可以在手表上启动 HKWorkoutSession 并在前台和后台正常停止。

我的问题是当手表应用程序在后台时 HKObjectQuery 似乎没有停止。澄清一下,如果我在锻炼期间锁定手表和手机约 3 分钟,然后尝试通过手机应用程序停止锻炼,则不会发生任何事情。

任何解决方案,甚至解释为什么都将不胜感激。

4

1 回答 1

0

您需要为 WatchKit 扩展启用后台模式。

用于锻炼的 WatchKit 背景模式

watchOS 应用程序编程指南:利用 iOS 技术状态:

手表应用被视为前台应用;它们仅在用户与其界面之一交互时运行。因此,相应的 WatchKit 扩展无法利用大多数后台执行模式来执行任务。但是,也有一些例外:

  • 使用HKWorkoutSession对象开始和停止锻炼。使用此对象需要在 WatchKit 扩展目标(而不是 WatchKit App 目标)中启用锻炼处理后台模式功能。启用此模式会将UIBackgroundModes密钥添加到扩展程序的Info.plist文件中。

现在,当您的应用在 Apple Watch 上开始锻炼时,它将在后台响应 WatchConnectivity 消息。
因此,如果您已处理 WatchConnectivity 消息以停止锻炼,它将停止。

于 2018-05-30T06:13:19.643 回答