HealthKit:保存在 iPhone 上的体能训练在“健身记录”App 中不可见



使用HealthKit,我正在保存

  1. 锻炼
  2. 相应的有功电能样本
  3. 相应的步行/跑步距离示例

我在Apple Watch和iPhone上运行相同的代码。

当我在 iPhone 上保存时

  • 我可以在我的 iPhone 应用程序中选择锻炼和样本
  • 我可以在 iPhone 健康应用程序中查看锻炼和示例
  • 锻炼和样本不在iPhone活动应用程序中(错误)

当我在苹果手表上保存时

  • 我可以在我的 iPhone 应用程序中选择锻炼和样本
  • 我可以在 iPhone 健康应用程序中查看锻炼和示例
  • 我可以在 iPhone 活动应用程序中查看锻炼和示例

当我保存在苹果手表上并在我的iPhone应用程序中删除它时

  • 我无法在我的iPhone应用程序中选择锻炼和样本(好)
  • 我在iPhone健康应用程序中看不到锻炼和示例(好)
  • 直到watchOS 2.1 + iOS 9.2.1:我仍然可以在iPhone活动应用程序中看到锻炼和样本(非常糟糕)
  • 使用 watchOS 2.2 beta 5 + iOS 9.3 beta 5 进行测试:锻炼和样本已从 iPhone 上的活动应用程序中删除(良好)

当我保存在苹果手表上并在我的苹果手表应用程序中删除它时

  • 使用 watchOS 2.2 beta 5 + iOS 9.3 beta 5 进行测试:一切都符合预期:在手表和 iPhone 上,任何提到的应用程序都不可见/可选(自 iOS 9.3 以来很好)
  • 直到watchOS 2.1 + iOS 9.2.1:iPhone上的锻炼和样本都没有被删除。(直到iOS 9.2.1为止都不好)

问题

我做错了什么,还是HealthKit和iPhone活动应用程序的工作方式?

更具体的问题:

    如何在 iPhone 上保存体能训练和样本,
  • 以便体能训练和样本不仅在同一部 iPhone 上的"健康"App 中可见,而且在同一部 iPhone 上的"健身记录"App 中可见?
  • 如何删除我使用手表应用程序保存的 iPhone 上的锻炼和样本,以便锻炼和样本不仅在同一部 iPhone 的健康应用程序中删除,而且在同一部 iPhone 上的健身记录应用程序中删除?

如果这不是我的错误,则没有iOS应用程序可以可靠地保存活动应用程序中显示的锻炼。iOS应用程序可以将数据发送到手表应用程序,这是简单的部分。但我不知道如何在后台处理手表上的这些数据。用户必须启动监视应用程序才能处理数据。

测试是在硬件上进行的,而不是在模拟器上进行的。 iOS 9.2.1, watchOS 2.1

我添加了使用 watchOS 2.2 beta 5 + iOS 9.3 beta 5 的测试。我编辑了上面的结果。总结:删除是固定的,在iPhone上保存仍然不起作用。

在iOS 9.3/watchOS 2.2中,苹果增加了HKActivitySummaryHKActivitySummaryQueryHKActivityRingView。简而言之:关于iPhone上的活动应用程序的所有内容也适用于HKActivitySummaryQuery。它们共享上述功能和错误。

这绝对是目前很难驾驭的事情!有三个不同的问题,有单独的解释。

  1. 当您在 iPhone 上存储体能训练时:

    • 保存在手机上的体能训练不会提供健身记录积分。它们必须源自 Apple Watch。
    • 编辑:从iOS 10开始,如果用户有Apple Watch,则保存在手机上的锻炼计入活动。
  2. 当您在 Apple Watch 上存储体能训练并在 iPhone App 中删除它时

    • 在 iOS 9.2 及更早版本中,删除手机上的示例不会删除 Apple Watch 上的相同示例,因为 Apple Watch 实际上是计算活动记录的。这在 iOS 9.3 中已修复
    • 删除HKWorkout样本不足以删除与该体能训练关联的样本。例如,如果不希望关联的活动能量样本不再存在,则需要显式删除它们。也就是说,删除锻炼应该会从"健身记录"圆环中删除其贡献。如果没有,那么这听起来像是一个值得单独提交的错误,因为您的原始错误可能被解释为请求将iPhone的锻炼计入活动。

最新更新