我一直在苹果的文档(以及网络的其余部分)中搜索这一点,但没有找到任何提及。还通过
HKWorkoutSession.h
查看 WatchOS 10 中可能相关的任何内容。我有一个适用于 Apple Watch 的锻炼应用程序。看来使用 HKWorkoutSession 会自动激活 Apple 在 WatchOS 10 中自己的堆栈小部件,显示经过的锻炼时间并为用户提供播放/暂停按钮。但是,它似乎无法让您自动访问播放/暂停按钮事件。我在为自己的小部件实现的 .onOpenURL(perform: { url in
方法中设置了断点。我还设置了断点
func workoutSession(_ workoutSession: HKWorkoutSession,
didChangeTo toState: HKWorkoutSessionState,
from fromState: HKWorkoutSessionState,
date: Date)
Apple 的小部件按钮不会触发这两种方法。
问题:如何监听播放/暂停按钮?或者,考虑到我正在实现自己的堆栈小部件,我可以为我的应用程序关闭此小部件吗?
注意:我自己使用 .onOpenURL 的小部件可以按需要工作,我对 HKWorkoutSessionDelegate 的使用也是如此。
您可以尝试这个解决方案,我做到了,它解决了问题:
func workoutSession(_ workoutSession: HKWorkoutSession, didGenerate event: HKWorkoutEvent) {
if(event.type == HKWorkoutEventType.pauseOrResumeRequest) {
if self.running {
pauseWorkout()
}
else {
resumeWorkout()
}
}
}
希望有帮助!