【问题标题】:iOS get heart rate from Apple Watch in near real timeiOS 近乎实时地从 Apple Watch 获取心率
【发布时间】:2016-05-04 13:04:52
【问题描述】:

我需要制作一个近乎实时地记录心率数据的应用程序,并尽快将这些数据发送到服务器。

首先我采用了这种方法:Watch os 2.0 beta: access heart beat rate

事实上它运行良好。 HealthKit 中每五秒就会有一个新的心率数据。但是现在我遇到了无法与服务器同步的问题。

我的第一个方法是 Watch 应用。手表正在向服务器发送数据。这不起作用,因为一旦手表上的屏幕变黑,它就会停止发送。

我的下一个方法是每五秒查询一次 iPhone 上的 HealthKit 以获取新数据。只要应用程序在前台,这就是有效的。

然后我看到有某种后台功能可以监视 HealthKit 本身并从后台撤消应用程序,您可以做一些事情。(enableBackgroundDeliveryForType) 这似乎不适用于心率(Apple 文档说明了一些事情就像这不起作用的步骤一样,我猜心率就是其中之一)。

我现在卡住了。你知道怎么做吗?我需要一些在 iPhone 上每 5-10 秒执行一次的后台任务。这似乎是不可能的

【问题讨论】:

  • 这不会很快耗尽电池吗?我的意思是每 5 秒左右发送一次数据
  • 这只是向服务器发送日期和心率的快速 GET 请求以及网球比赛,因此不会使用那么长时间
  • @user2529173,您认为不会花很长时间,但是拥有数十个此类应用程序的用户将不得不每秒向任意服务器发送 2 个请求,而不能保证低延迟或最佳路由,它们是甚至不能保证活着,并且请求很容易被挂起,直到超时。尝试将后台获取与健康工具包结合使用,系统将决定何时应允许应用程序访问网络,没有明确记录,但我相信间隔将取决于应用程序的使用频率和速度 真的在一般设备状态之上执行。
  • 这款应用是为特殊人群设计的,大概会有 10 个人在使用它。所以我不担心那些事情。我尝试了后台提取,但它似乎不能可靠地工作
  • 是的,您可以在测量期间执行代码,但 watchOS 不能保证此测量每五秒进行一次。

标签: ios swift watchkit watchos-2 healthkit


【解决方案1】:

更新

正如@BootMaker 所指出的,Apple 为 WatchOS 3 中的 HKWorkout 应用程序提供了后台模式,因此它现在可以正常工作了。您必须运行 HKWorkoutSession,这将保持您的心率实时传输,即使应用程序在后台(手表上的黑屏)

最近的是手表应用打开时。

我为什么要这么说?

  1. 有两个 HealthKit 的数据库(一个在 iPhone 上,另一个在 Apple Watch 上)。何时同步是任意的,仅由操作系统决定

  2. 最接近实时是当你没有任何密码锁定你的屏幕iPhone 或 Apple Watch。 无论哪种方式,都不能保证每次向 Apple Watch 的 HealthKit

  3. 添加新度量时都会发生同步
  4. 强制心率传感器实时工作的唯一方法是通过锻炼或观察者,而您的Apple Watch 应用在FOREGROUND。

  5. 后台交付不可用于 Apple Watch 应用。

  6. Watch OS 2 要求传感器至少每 10 分钟自动测量一次(在后台)。

没有其他解决方法,如果您需要更长时间的实时,或者当用户不使用您的应用时,您将需要使用专门的可穿戴设备。

【讨论】:

  • 感谢您的回答。我一直害怕这个答案。似乎该项目无法用 Apple Watch 完成。无论如何,谢谢你
  • 我知道这种感觉。您将不得不调整并可能等待 Watch OS 的下一个版本。也许他们决定在 Watch 的 HealthKit 上添加 HKObserver 功能
  • Hugo 的回答是正确的,它揭示了 Apple Watch 的严重局限性,对于所有其他传感器(如加速度计)也是如此。实际上,如果没有实时传感器,它现在是非常没用的小工具……您必须等待新的 watchOS 版本或新设备,或者只需花一些钱就可以使用可穿戴设备。
  • 公平地说,Apple 在 WatchOS 3 中为 HKWorkout 应用程序提供了后台模式,所以它现在可以工作了。您必须运行 HKWorkoutSession,这将保持您的心率实时传输,即使应用程序在后台(手表上的黑屏)
  • @BootMaker 你是对的。我将更新我的答案以供将来参考。感谢您让我注意到这个过时的答案。 ?
【解决方案2】:

如果有人仍然需要实时获取心率或其他数据。使用此解决方案:

  1. 开发 Apple Watch 应用/扩展程序
  2. 在手表应用中,使用 HKHealthStore、HKWorkoutConfiguration、HKWorkoutSession、HKLiveWorkoutBuilder 创建一个锻炼。创建锻炼后,您的手表应用会实时获取心率。
  3. 使用手表套件连接 WCSession 将数据发送到 iPhone 应用程序。
  4. 在 Apple Watch 和 iPhone 中启用后台模式。

我测试过,即使应用终止,我们仍然可以得到心率(我使用本地通知发布心率数据进行调试)

【讨论】:

猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2022-10-12
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
相关资源
最近更新 更多