我需要制作一个近乎实时记录心率数据的应用程序,并尽快将此数据发送到服务器。
首先我采用了这种方法:Watch os 2.0 beta: access heart beat rate
事实上它工作正常。 HealthKit每五秒钟会有一个新的心率数据。但现在我遇到的问题是我无法与服务器同步。
我的第一个方法是Watch应用程序。手表正在向服务器发送数据。这不起作用,因为一旦手表上的屏幕变黑,它就会停止发送。
我的下一个方法是每隔五秒钟在iPhone上查询HealthKit以获取新数据。只要应用程序在前台,这就有效。
然后我看到有某种背景功能可以监视HealthKit本身并从后台撤消应用程序,你可以做一些事情。(enableBackgroundDeliveryForType)这似乎不适用于心率( Apple文档说,对于像这些不起作用的步骤,我猜心率就是其中之一。
我现在被困住了。你知道怎么做吗?我需要在iPhone上每5-10秒执行一次后台任务。那似乎是不可能的
答案 0 :(得分:16)
<强>更新强>
正如@BootMaker所注意到的,Apple在 WatchOS 3 中为 HKWorkout 应用程序提供了后台模式,因此它现在正在运行。您必须运行 HKWorkoutSession ,即使应用程序处于后台(观看黑屏),这也会实时保持您的实时交付
当手表应用程序打开时 。
为什么我要陈述这个?
有两个HealthKit的数据库(一个在iPhone上,另一个在Apple Watch上)。当他们同步是任意的并且仅由O.S。
您最接近 实时 的时候是不有任何密码锁定您的屏幕 iPhone 或 Apple Watch 。 无论哪种方式,都不能保证每次将新措施添加到 Apple Watch的HealthKit
迫使心率传感器实时工作的唯一方法是通过锻炼或观察者 > Apple Watch应用位于 FOREGROUND 。
Apple Watch应用程序的后台投放不。
观看操作系统2 请求传感器每10分钟自动测量一次(在后台)。
没有其他解决方法,如果您需要实时更长时间,或者当用户未使用您的应用时,您将需要使用专门的可穿戴设备。
答案 1 :(得分:3)
如果仍然有人需要实时获取心率或其他数据。使用此解决方案:
我测试过,即使应用终止了,我们仍然可以获取心率(我使用本地通知发布了心率数据以进行调试)