繁体   English   中英

iOS 近乎实时地从 Apple Watch 获取心率

[英]iOS get heart rate from Apple Watch in near real time

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

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

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

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

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

然后我看到有某种后台功能可以监视 HealthKit 本身并从后台撤消应用程序,您可以做一些事情。不起作用,我猜心率是其中之一)。

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

更新

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

最接近的手表应用程序打开时

我为什么要说这个?

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

  2. 最接近实时的是当您在iPhoneApple Watch 中没有任何密码锁定您的屏幕时。 无论哪种方式,都不能保证每次向Apple Watch 的 HealthKit添加新度量时都会发生同步

  3. 强制心率传感器实时工作的唯一方法是在Apple Watch 应用程序处于FOREGROUND时通过锻炼观察者

  4. 后台传送不适用于 Apple Watch 应用。

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

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

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

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

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

@nhatahm您的示例未在实际版本中运行。 iOS13 WatchOS6.1 Xcode11.2 beta2(11B44)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM