Healthkit HKObserverQuery仅使用HKDeletedObject进行更新

时间:2015-10-07 21:16:29

标签: ios ios9 health-kit

我按照文档中的建议,使用在AppDelegate中设置的HKObserverQuery和HKAnchoredObjectQuery进行HealthKit后台交付。虽然我很快得到了新数据点的回调,但我在测试中注意到,如果我对Healthkit数据进行了修改,那只是一个删除(没有添加新的HKSample点),在下一个新点之前我不会得到回调被添加。此时,我将获得新数据点的回调以及之前的删除。但我永远不会得到一个只包含删除的回调。

令我担心的是,Apple说这些HKDeletedObjects在一段不确定的时间后会消失并且不会出现在任何疑问中。

https://developer.apple.com/library/prerelease/ios/documentation/HealthKit/Reference/HKDeletedObject_ClassReference/index.html

因此,如果我的应用程序正在使用此方法同步HealthKit中的数据,那么在用户删除某些数据然后很长一段时间内不会添加任何新点或启动我的应用程序时会发生什么情况到前台?我认为在那种情况下我完全会错过删除。

TLDR:在至少有一个新的HKSample(即使有删除可用)的情况下,是否只调用HKAnchoredObjectQuery的回调?如果是这样,我们应该如何在删除后处理长时间不活动?

1 个答案:

答案 0 :(得分:0)

至于问题的第一部分:当我阅读HKStore.enableBackgroundDeliveryForType()的文档时......“只要指定类型的新样本保存到商店,HealthKit就会唤醒您的应用” - 只有新样本才会触发查询,这与我的经验一致。

在第二部分中,设置HKAnchoredObjectQuery.updateHandler,导致锚定查询在删除和添加时触发。但根据我的经验,它并不一致(参见我的相关question)。