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

开发WatchOS4应用:如何阻止WorkoutSession更新Activity运动环?

解决watchOS 4中WorkoutSession更新Activity Rings的问题

这个场景我太熟悉了——做健康监测类App的时候,用WorkoutSession拿心率数据却不小心触发了活动环更新,确实挺头疼的。好在有几个可靠的办法能解决:

1. 选择非运动类的Workout Activity Type

创建HKWorkoutSessionConfiguration时,把activityType设置为.other,这是最直接的方式:

let configuration = HKWorkoutSessionConfiguration()
configuration.activityType = .other
configuration.locationType = .indoor // 根据你的场景选择,比如室内监测无需GPS

watchOS会默认识别.other类型的会话不是正式运动记录,不会把它的数据计入Activity Rings。

2. 明确禁用活动跟踪

如果你的场景需要使用其他activityType(比如特殊监测场景),可以在配置里额外设置isActivityTrackingEnabled为false,明确告诉系统不要同步数据到活动环:

configuration.isActivityTrackingEnabled = false

这个属性在watchOS 4中已经支持,能精准控制活动环的更新逻辑。

3. 持久化数据时忽略相关指标(若需保存到HealthKit)

如果你之后需要把会话数据存入HealthKit,别忘了在创建HKWorkout对象时添加元数据,避免事后触发活动环更新:

let workout = HKWorkout(
    activityType: .other,
    start: startDate,
    end: endDate,
    workoutEvents: nil,
    totalEnergyBurned: nil,
    totalDistance: nil,
    metadata: [
        HKMetadataKeyShouldIgnoreEnergyBurned: true,
        HKMetadataKeyShouldIgnoreFlightsClimbed: true
    ]
)

这样即使数据存入健康数据库,系统也不会用它来更新运动环、锻炼环等指标。

测试的时候记得用真实设备验证——模拟器的Activity Rings偶尔会有延迟或不准确的情况,真实设备上的表现才是最终参考。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:28:00