按照文档中的建议,我在HKObserverQuery和HKAnchoredObjectQuery中设置了HKObserverQuery背景传递,并在AppDelegate中进行了设置。虽然我很快就会得到新数据点的回调,但我在测试中注意到,如果我对Healthkit数据进行了修改,这只是一个删除(没有添加新的HKSample点),在添加下一个新点之前,我不会得到回调。此时,我将得到一个新数据点的回调,再加上前面的删除。但我永远无法得到一个只包含删除的回调。
让我担心的是,苹果说这些HKDeletedObjects会消失,在一段时间后不会出现在任何疑问中。
因此,如果我的应用程序使用这种方法同步来自HealthKit的数据,那么如果用户删除一些数据,然后在很长一段时间内不添加任何新的点或将我的应用程序启动到前台,会发生什么情况呢?在这种情况下,我想我会完全错过删除。
TLDR:对于HKAnchoredObjectQuery的回调是否只在至少有一个新的HKSample (即使有可用的删除)的情况下才被调用?如果是的话,我们应该如何处理删除后长时间的不活动呢?
发布于 2015-10-08 14:45:16
关于问题的第一部分:当我阅读HKStore.enableBackgroundDeliveryForType()的文档时.“只要将指定类型的HealthKit新样例保存到商店,就会唤醒您的应用程序”--只有新的示例才会触发查询,这与我的经验是一致的。
对于第二部分,设置HKAnchoredObjectQuery.updateHandler将导致锚定查询在删除和添加时触发。然而,在我的经验中,这是不一致的(请参阅我相关的question)。
https://stackoverflow.com/questions/33002565
复制相似问题