7

我正在使用HKLiveWorkoutBuilder&HKWorkoutRouteBuilder来跟踪 Apple Watch 上的锻炼。

打电话时:

[workoutBuilder finishWorkoutWithCompletion:^(HKWorkout * _Nullable workout, NSError * _Nullable error) {

}];

返回的workout对象不包括用户行进的距离:

(lldb) po workout.totalDistance
nil

但是路线已正确保存。

鉴于这.totalDistance是只读的,我应该如何在 watchOS 5 中设置锻炼距离?

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

3

这里的答案有两个部分。

要让它在步行或跑步时工作,您可以使用以下代码:

workoutBuilder?.beginCollection(withStart: Date(), completion: { (success, error) in
    guard success == true else {
        #warning ("deal with failure")
        return
    }

    workoutBuilder?.dataSource = HKLiveWorkoutDataSource(healthStore:self.healthStore, workoutConfiguration: self.workoutConfig)

    //  this is the important bit 
    workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .distanceWalkingRunning)!, predicate: nil)

    workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .heartRate)!, predicate: nil)
    workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned)!, predicate: nil)

})

您可以将其用于游泳和滑雪。

目前没有办法使用锻炼生成器来获取其他类型的户外活动的距离,例如划船。

--

如果您想复制和粘贴,雷达/反馈详细信息

反馈编号: FB5714600

标题:支持更多运动类型的距离跟踪

身体:

目前,现场锻炼生成器仅支持以下类型的跟踪距离: - 步行或跑步距离 - 滑雪 - 游泳

我看到两个选项。最好的办法是允许这样的事情:

workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .distancePaddling)!, predicate: nil)

另一种选择是允许锻炼是可变的,以便可以追溯添加距离。

如果需要,我很乐意提供进一步的意见。我们的用户喜欢 Apple Watch,但令他们感到沮丧的是,他们无法将划桨锻炼的距离存储在“健康”中。

于 2018-09-28T20:57:38.003 回答