问题标签 [hkobserverquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1322 浏览

ios - HKObserverQuery 连续两次随机调用

我有一个我正在尝试解决的问题,我已经设置了一个HKObserveryQuery,它运行良好并为我收集新数据。

然而问题是,有时当我手动将项目添加到健康应用程序后返回健康应用程序并删除它时,我注意到HKObserverQuery我已经设置了两次非常接近的火灾,我正在尝试解决,因为我使用这个观察者稍后上传一些数据,我不想重复。

我将不胜感激提供的任何帮助。代码:

控制台输出,注意时间:仅从健康应用程序中删除一项时会发生这种情况,这是不正确的。

0 投票
1 回答
352 浏览

ios - 将 HealthKit Delete 传播到后端

希望这个问题听起来不会太傻,但我还没有找到解决方案。我目前正在使用与 HealthKit 集成的 Xamarin 编写应用程序。存储在 HK 中的数据会定期同步到服务器。这是通过提取食物相关性的 HKAnchoredObjectQuery 完成的。

由于数据是定期提取的,因此存在同步之间的情况,用户可能会删除 HealthKit 中的值。该删除需要在下一次同步时传播回服务器。

我最初的想法是使用观察者查询来做到这一点。

我的问题是:使用 HealthKit 的观察者查询,有没有办法确定触发查询的操作是否是删除操作?

0 投票
0 回答
675 浏览

ios - HKObserverQuery 是否可以在应用程序未运行(Killed)时收到通知?

我的要求是使用 enableBackgroundDeliveryForType: 方法注册任何一项健康数据,例如步数、体重、心率等,以进行后台交付。然后为要检查的相同 Health 数据创建一个 Observer 查询。

  1. 在这种情况下,如果我的应用程序被用户强行杀死并使用 Health 应用程序更改了 Health 数据。在这个阶段是否可以收到通知到我的应用程序?

  2. 是否必须注册任何后台模式,才能通过 HKObserverQuery 获得健康数据修改通知?

编辑1:

请帮我。谢谢。

0 投票
1 回答
1725 浏览

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

HKObserverQuery有以下方法支持在后台接收更新:

updateHandler具有completionHandler以下文档:_

这个块被传递给更新处理程序。处理完传入数据后,您必须立即调用此块。调用这个块告诉 HealthKit 你已经成功接收到后台数据。如果您不调用此块,HealthKit 将继续尝试使用退避算法启动您的应用程序。如果您的应用程序未能响应 3 次,HealthKit 会假定您的应用程序无法接收数据,并停止向您发送后台更新。

从查看其他帖子看来,围绕这个处理程序似乎有很多困惑。以下是我对此的一些疑问:

  • 什么时候应该调用处理程序?如果调用得太晚,那么 HK 可能会认为应用程序从未收到查询更新,从而导致您点击后台更新 3-strikes back-off 算法。文档声明它应该在处理其他查询后调用。根据运行这些查询需要多长时间,听起来您可能会危险地接近后台更新罢工。
  • 为什么需要这个?系统不应该知道应用程序已经启动并收到了后台更新吗?在后台使用CoreBluetooth时,它只会在后台唤醒您的应用程序 10 秒。无需调用任何处理程序或处理后台更新 3-strikes。
  • 如果您点击后台更新 3-strikes 并且 HK 停止发送更新是永久的吗?HK是否会再次开始发送后台更新?如果有一个错误阻止了处理程序被调用并且现在你已经修复了它怎么办。应用程序是否卡住了,永远不会收到更新?还是会在应用重新启动或更新时重置?
  • HK 是否让您的应用程序在后台运行,直到调用处理程序?这是其目的的一部分还是只是副作用?如果这是其目的的一部分,我们可以在需要停止之前运行多长时间(并击中第一个后台更新罢工)?
0 投票
1 回答
319 浏览

ios - HKObserverQueryCompletionHandler 超时?

我在我的 iOS 应用程序中使用HKObserverQuery后台交付。在 HKObserverQuery 的 updateHandler 中,我执行一个查询(HKAnchoredObjectQuery)并通过 https 将结果发送到远程服务器。但是在慢速连接(例如 EDGE)和大量数据(例如步骤)的情况下,数据发送可能需要长达一分钟。

文档到 HKObserverQueryCompletionHandler:

当 HealthKit 唤醒您的应用程序时,它会在任何与新数据匹配的观察者查询上调用更新处理程序。这个块被传递给更新处理程序。处理完传入数据后,您必须立即调用此块。调用这个块告诉 HealthKit 你已经成功接收到后台数据。如果您不调用此块,HealthKit 将继续尝试使用退避算法启动您的应用程序。如果您的应用程序未能响应 3 次,HealthKit 会假定您的应用程序无法接收数据,并停止向您发送后台更新。

所以我的问题是:在我的应用程序被 HealthKit 假定为“挂起”之前,我需要多长时间调用HKObserverQueryCompletionHandler ?或者我应该立即调用HKObserverQueryCompletionHandler并为 https 请求运行一个新的长时间运行的后台任务?

0 投票
1 回答
430 浏览

ios - HealthKit 未返回更新信息

我一直在尝试向 HealthKit 查询我手机上的步数。这是我尝试过的:

因此,stepsLabel现在显示“296 计数”。但是,我有更多的步骤。我不知道为什么它没有正确更新。我看过这篇文章这篇文章。但是,我没有很好地理解答案。我应该如何确保查询正确更新?谢谢你的帮助。

0 投票
1 回答
116 浏览

ios - HKObserverQuery 无法在 iPhone 上运行

我想立即从 Apple Watch 收集心率数据到 iPhone,但即使我遵循Apple 的文档,我发现无法创建和更新 HKAnchorObjectQuery(在 HKObserverQuery 中)。

此外,HKObserverQuery 仅在开始执行应用程序时有效。

我已经尝试了2周,没有任何想法了......

下面的代码:

正在寻找您的回复!

这是我与此相关的另一个问题。

0 投票
1 回答
532 浏览

ios - HKObserverQuery 仅在应用程序重新打开时运行

所以我一直在遵循这个答案中的说明...... 应用程序未运行时的 Healthkit 后台交付

该代码运行良好并且在应用程序打开时工作并表示后台交付成功,但是当我通过四处走动并将设备上的时钟更改为一个小时前来测试应用程序时,我没有收到任何日志让我知道它已经跑了。但是,如果我再次打开应用程序,观察者查询就会运行。

查询在 appDelegate 方法 didFinishLaunching 中初始化

0 投票
0 回答
118 浏览

ios - HKObserver updateHandler 停止执行

即使应用程序在后台,我也需要在服务器上上传步骤。我为 HKQuantityTypeIdentifierStepCount 添加了带有 enableBackgroundDeliveryForType 的 HKObserverQuery。

当从观察者收到更新通知时,它将查询一天的总步数(HKStatisticsCollectionQuery)。

到目前为止,它工作正常,执行查询过程后它停止,没有收到结果。苹果健康中有步骤,但结果不返回。

谁能知道它为什么停止或不返回结果?

HKobserverQuery 和 enableBackgroundDeliveryForType 都是从 didFinishLaunchingWithOptions 添加的。

我创建了从苹果健康获取步骤并上传到服务器的自定义类,下面是获取步骤的方法代码。

如果提供的信息不够,请询问任何人。我不知道我做错了什么。

0 投票
2 回答
2378 浏览

ios - HKObserverQuery 因未确定授权而失败

在尝试为 Healthkit 设置观察者查询时,对于很多用户来说,我收到了Authorization not Determined.

经过一番研究后,我发现只有在尝试将数据写入(共享)到 Healthkit 时才会发生这样的错误。根据 Apple HK 文档 - 当尝试读取用户未授予权限的数据时,我根本不应该获取任何数据(没有任何错误),就好像没有新数据一样。

这是我用来设置观察者查询的代码:

错误在HKObserverQuery failed事件中被捕获。

正如我所提到的,权限请求不应影响数据读取,但无论如何,这里的代码:

这是我启用后台交付的部分