watchkit - watchOS 5 : HKLiveWorkoutBuilder, HKWorkoutRouteBuilder 和锻炼距离

标签 watchkit healthkit watchos-5

我正在使用 HKLiveWorkoutBuilderHKWorkoutRouteBuilder 来跟踪 Apple Watch 上的锻炼情况。

调用时:

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

}];

返回的workout对象不包含用户行驶的距离:

(lldb) po workout.totalDistance
nil

但是路线已正确保存。

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

enter image description here

enter image description here

最佳答案

这里的答案有两个部分。

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

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,但令他们沮丧的是,他们无法在“健康”中存储划桨锻炼的距离。

关于watchkit - watchOS 5 : HKLiveWorkoutBuilder, HKWorkoutRouteBuilder 和锻炼距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52265670/

相关文章:

ios - HealthKit 计步器

ios - 使用模拟器显示保存的路径,但在使用实际智能 watch 设备(录音机)进行测试时不显示

ios - "Missing architecture. Apps built with Watch OS 5.0 and later SDKs must contain additional architectures."

swift - 使用 presentController 更改 View 后无法使用基于页面的导航?

ios - Swift 和 HealthKit : type of expression too ambiguous without more context

ios - 将 Health Kit 数据访问 Apple Watch OS 2,不包括锻炼数据

swift - 多色并发症文本

swift - 带有基于 iOS 的 WatchKit-Extension 的 RealmSwift-1.2 和 iOS-9(全部在 iPhone 上)

xcode - 没有名为 'UIApplicationDelegate' 的类型或协议(protocol)

ios - 在 Apple Watch 上调试永远不会打印到控制台