HKObserverQuery
有以下支持在后台接收更新的方法:
- initWithSampleType:predicate:updateHandler:
updateHandler
有一个completionHandler
,其具有以下文档:这个块被传递给更新处理程序。只要您完成了入站数据的处理,就必须立即调用此块。调用此块会告诉HealthKit您已成功接收到后台数据。如果您不调用此块,HealthKit将继续尝试使用回退算法启动您的应用程序。如果您的应用程序连续三次未响应,则HealthKit认为您的应用程序无法接收数据,并停止向您发送后台更新。
从其他文章中看来,似乎围绕此处理程序存在很多混淆。以下是我对它的一些问题:
CoreBluetooth
时,它只会在后台唤醒您的应用程序10秒钟。不需要调用任何处理程序或处理背景更新3次打垮。