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

时间:2016-01-27 14:14:51

标签: ios swift watchkit watch-os-2 health-kit

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

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

事实上它工作正常。 HealthKit每五秒钟会有一个新的心率数据。但现在我遇到的问题是我无法与服务器同步。

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

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

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

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

2 个答案:

答案 0 :(得分:16)

<强>更新

正如@BootMaker所注意到的,Apple在 WatchOS 3 中为 HKWorkout 应用程序提供了后台模式,因此它现在正在运行。您必须运行 HKWorkoutSession ,即使应用程序处于后台(观看黑屏),这也会实时保持您的实时交付

  

当手表应用程序打开时

为什么我要陈述这个?

  1. 有两个HealthKit的数据库(一个在iPhone上,另一个在Apple Watch上)。当他们同步是任意的并且仅由O.S。

  2. 决定
  3. 您最接近 实时 的时候是有任何密码锁定您的屏幕 iPhone Apple Watch 。 无论哪种方式,都不能保证每次将新措施添加到 Apple Watch的HealthKit

  4. 时都会发生同步
  5. 迫使心率传感器实时工作的唯一方法是通过锻炼观察者 > Apple Watch应用位于 FOREGROUND

  6. Apple Watch应用程序的后台投放

  7. 观看操作系统2 请求传感器每10分钟自动测量一次(在后台)。

  8.   

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

答案 1 :(得分:3)

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

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

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