从 HKObserverQuery 获取结果

Posted

技术标签:

【中文标题】从 HKObserverQuery 获取结果【英文标题】:Obtaining results from HKObserverQuery 【发布时间】:2015-01-24 16:46:53 【问题描述】:

我几天前发布了Setting up HKObserverQuery using Swift。

我还想知道,是否有办法使用 HKObserverQuery 获取刚刚添加到 HealthKit 中的最新数据点的值,或者它只是让您知道添加了一个新数据点,但是您仍然需要使用 HKSampleQuery 再次查询它来检索值。

【问题讨论】:

【参考方案1】:

HKObserverQuery 主要通知样本类型是否已更新。要获取数据,您必须在更新处理程序块或闭包中编写各自的查询(如 HKSampleQuery 或 HKAnchoredObjectQuery)。您应该注意的一件事是提供给观察者查询的谓词,因为它定义了观察更改的时间。结束日期必须是未来的,以便如果通知的任何数据发生变化,它会定义观察者将持续观察变化的时间。如果您想要最新的示例,请尝试使用 HKAnchoredObjectQuery。浏览 HKObserverQuery 的定义。尽量不要将结束日期设置为超过一两天。希望这可以帮助。谓词部分很重要,并且与示例查询的谓词有点不同。如果要启用后台更新,请确保调用 ObserverQueryCompletionHandler。

【讨论】:

【参考方案2】:

我一直在寻找相同的答案并找到了另一个帖子: Observing changes in HealthKit data using HKObserverQuery

看来您每次获得更新时都会执行单独的查询

【讨论】:

以上是关于从 HKObserverQuery 获取结果的主要内容,如果未能解决你的问题,请参考以下文章

iOS : HKObserverQuery 的后台更新completionHandler 的使用

华为云CDN加速OBS桶文件最佳实践

HKObserverQuery 连续两次随机调用

HKObserverQueryCompletionHandler 超时?

HealthKit HKObserverQuery 没有持续触发

添加新数据并设置 hkObserverQuery 时,HealthKit 不启动应用程序