【问题标题】:HKWorkoutSession: Not getting Heart Rate when screen is turned off in watchOS 2HKWorkoutSession:在 watchOS 2 中关闭屏幕时无法获取心率
【发布时间】:2015-10-28 02:55:06
【问题描述】:

我正在使用 iOS 9 beta 4 和 watchOS 2 beta 4。

当手表屏幕变黑(锁定)时,我似乎无法获取任何心率数据。我会接到applicationWillResignActive 的电话,然后心率数据就会停止。

当屏幕锁定时,传感器似乎也在一段时间后停用(不再是绿色)。

还有其他人看到这种行为吗?如果其他人在手表屏幕锁定时获取心率数据,我可以发布我的代码以启动 WorkoutSession。

【问题讨论】:

    标签: ios watchkit apple-watch healthkit watchos-2


    【解决方案1】:

    手表应用平台旨在在 applicationWillResignActive() 之后立即完全禁用您的代码。然而,当 HKWorkoutSession 处于活动状态时,手表应在后台将心率数据记录到 HK 商店(只要另一个手表应用程序没有启动新应用程序并取消您的应用程序)。

    这就是我开始收集心率的大致步骤:

    func startCollectingHR(){
        guard workoutSession == nil else{return} // Make sure it's not already started
        // Also make sure you get the appropriate HealthKit permissions
        workoutSession = HKWorkoutSession(activityType: HKWorkoutActivityType.CrossTraining, locationType: HKWorkoutSessionLocationType.Outdoor)
        workoutSession!.delegate = self
        healthStore.startWorkoutSession(workoutSession!)
        print("HR collection started.")
    }
    

    不幸的是,我还没有找到任何方法让心率在手表上 HealthKit 商店以外的任何地方可靠地实时流式传输。

    【讨论】:

      【解决方案2】:

      我注意到类似的行为,并发现第一次锻炼会按预期运行,但随后的锻炼只会在表盘处于活动状态时运行。会话完成后,我通过重置 HKWorkoutSession 解决了这个问题。

      【讨论】:

        【解决方案3】:

        从 watchOS 3.0 开始,您可以将带有 workout-processing值的 WKBackgroundModes 条目添加到扩展程序的 Info.plist。

        来自docs

        在后台运行 锻炼课程可以在后台运行。 后台运行赋予应用以下能力:

        该应用程序会在整个锻炼过程中继续运行,即使 当用户放下手腕或与不同的应用程序交互时。 当用户抬起手腕时,应用程序重新出现,让用户 快速轻松地检查他们当前的进度和表现。

        应用程序可以继续访问 Apple Watch 传感器中的数据 背景,让您始终保持应用程序最新。为了 例如,一个正在运行的应用程序可以继续跟踪用户的心率, 确保随时显示最新的心率数据 用户抬起手腕。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-17
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多