HealthKit:保存在 iPhone 的锻炼在 Activity 应用程序中不可见

HealthKit: Workout saved on iPhone not visible in Activity App

使用HealthKit,我正在节省

  1. 一次锻炼
  2. 相应的有功电能样本
  3. 对应的Walk/Run个距离样本

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

当我在 iPhone

上储蓄时

当我在 apple watch 上省钱时

当我在 Apple Watch 上保存并在我的 iPhone App 中删除它时

当我在 Apple Watch 上保存并在我的 Apple Watch App 中删除它时

问题

我是不是做错了什么,或者这是 HealthKit 和 iPhone Activity 应用程序的工作方式?

更具体的问题:

如果这不是我的错误,iOS 应用程序无法可靠地保存 activity 应用程序中显示的锻炼。 iOS 应用程序可以将数据发送到手表应用程序,这是比较容易的部分。但我不知道如何在后台处理手表上的这些数据。用户必须启动手表应用程序才能处理数据。

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

我使用 watchOS 2.2 beta 5 + iOS 9.3 beta 5 添加了测试。我编辑了上面的结果。总结:删除已修复,保存在iPhone上还是不行。

对于 iOS 9.3 / watchOS 2.2,Apple 添加了 HKActivitySummaryHKActivitySummaryQueryHKActivityRingView。简而言之:关于 iPhone 上的 activity 应用程序所说的一切也适用于 HKActivitySummaryQuery。他们共享上述功能和错误。

这绝对是目前难以驾驭的东西!三个不同的问题有不同的解释。

  1. 当您在 iPhone 上保存锻炼时:

    • 保存在 phone 上的锻炼并非旨在提供 Activity 积分。它们必须源自 Apple Watch。
    • 编辑: 自 iOS 10 起,如果用户拥有 Apple Watch,则保存在 phone 上的锻炼计入 Activity。
  2. 当您在 Apple Watch 上保存锻炼并在 iPhone App 中将其删除时:

    • 在iOS 9.2 及更早版本中,删除 phone 上的样本不会删除 Apple Watch 上的相同样本,其中 Activity 是实际计算的。这是 在 iOS 9.3.
    • 中修复的
    • 删除 HKWorkout 样本不足以删除与该锻炼关联的样本。例如,如果您不想再存在相关的活性能量样本,则需要明确删除它们。也就是说,删除锻炼应该从 Activity 环中删除它的贡献。如果没有,那么这听起来像是一个值得单独提交的错误,因为您的原始错误可能被解释为请求 iPhone 的锻炼计入 Activity。