【问题标题】:HKObjectQuery Won't StopHKObjectQuery 不会停止
【发布时间】:2018-05-30 05:18:31
【问题描述】:
我正在尝试为使用 Apple Watch 在我的应用程序上进行锻炼创造良好的用户体验。我可以在手表上启动 HKWorkoutSession 并在前台和后台正常停止。
我的问题是,当手表应用程序在后台时,HKObjectQuery 似乎没有停止。澄清一下,如果我在锻炼期间锁定手表和手机约 3 分钟,然后尝试通过手机应用程序停止锻炼,则不会发生任何事情。
非常感谢任何解决方案,甚至解释原因。
【问题讨论】:
标签:
swift
watchkit
apple-watch
healthkit
hkhealthstore
【解决方案1】:
您需要为 WatchKit 扩展启用后台模式。
App Programming Guide for watchOS: Leveraging iOS Technologies 状态:
手表应用被视为前台应用;它们仅在用户与其界面之一交互时运行。因此,相应的 WatchKit 扩展无法利用大多数后台执行模式来执行任务。但是,也有一些例外:
- 使用
HKWorkoutSession 对象开始和停止锻炼。使用此对象需要在 WatchKit 扩展目标(而不是 WatchKit App 目标)中启用锻炼处理后台模式功能。启用此模式会将 UIBackgroundModes 键添加到扩展程序的 Info.plist 文件中。
现在,当您的应用在 Apple Watch 上开始锻炼时,它会在后台响应 WatchConnectivity 消息。
因此,如果您已处理 WatchConnectivity 消息以停止锻炼,它将停止。