You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

第三方App如何监听WatchOS 10 Workout Widget播放/暂停按钮或关闭该组件?

WatchOS 10 系统健身Stack Widget 事件监听与关闭方案

一、监听播放/暂停按钮事件

系统自带的健身Stack Widget是直接操控HKWorkoutSession状态的,不需要通过自定义Widget的onOpenURL捕获,而是通过HKWorkoutSession的状态变更回调来监听:

  • 先检查HKWorkoutSession的代理绑定:创建会话时必须设置workoutSession.delegate = self,且当前类已遵守HKWorkoutSessionDelegate协议,这是代理方法触发的核心前提。
  • 若代理绑定无误但方法仍未触发,SwiftUI项目可尝试用发布者监听状态变化:
@State private var workoutSession: HKWorkoutSession?

// 在视图中添加状态监听
.onReceive(workoutSession?.$state ?? EmptyPublisher()) { newState in
    switch newState {
    case .running:
        // 处理播放逻辑
        print("系统Widget触发播放")
    case .paused:
        // 处理暂停逻辑
        print("系统Widget触发暂停")
    default:
        break
    }
}
  • UIKit项目则检查workoutSession(_:didChangeTo:from:date:)方法的实现无语法错误,且HKHealthStore已获取HKWorkoutType的读写权限。

二、关闭系统自带Stack Widget

目前苹果没有提供直接关闭该系统Widget的公开API,但可以通过以下方式让自定义Widget替代它:

  • 确保自定义Widget配置为accessoryStack类型:在Widget的配置代码中,指定widgetFamily为.accessoryStack,并设置合理的kind标识,系统会优先展示当前活跃健身应用的自定义Widget。
  • 保持自定义Widget活跃:当HKWorkoutSession启动时,主动刷新自定义Widget的内容,确保它在Stack中处于可见位置,系统默认Widget会被挤压或替换。

注:你的自定义WidgetonOpenURL和HKWorkoutSessionDelegate正常工作,说明基础配置没问题,重点排查代理绑定或状态监听的细节即可。

内容的提问来源于stack exchange,提问作者andrewlewisdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:05:58