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

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

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

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

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

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

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

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

解决方法

UPDATE

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

The closest you are going to be is while the watch app is open.

我为什么说这个?

>有两个HealthKit的数据库(一个在iPhone上,另一个在Apple Watch上).当它们同步是任意的并且仅由O.S.决定.
>您最接近实时的是当您没有任何密码锁定iPhone或Apple Watch中的屏幕时.
无论哪种方式,都无法保证每次向Apple Watch的HealthKit添加新度量时都会发生同步
>强制心率传感器实时工作的唯一方法是在Apple Watch应用程序处于FOREGROUND时通过锻炼或观察者进行锻炼.
> Apple Watch应用程序不提供后台交付.
>观察OS 2请求传感器每10分钟自动测量(在后台).

There’s no other workaround,if you need real time for longer periods,or while the user is not using your app,you will need to use an specialized wearable.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...