watchOS 5: HKLiveWorkoutBuilder, HKWorkoutRouteBuilder и расстояние тренировки

Я использую HKLiveWorkoutBuilder & HKWorkoutRouteBuilder отслеживать тренировки на Apple Watch.

при звонке:

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

}];

Возвращенный workout Объект не включает расстояние, пройденное пользователем:

(lldb) po workout.totalDistance
nil

Однако маршрут сохранен правильно.

При условии .totalDistance только для чтения, как мне установить дистанцию ​​тренировки в watchOS 5?

введите описание изображения здесь

введите описание изображения здесь

1 ответ

Решение

Ответ состоит из двух частей.

Чтобы заставить его работать во время ходьбы или бега, вы можете использовать следующий код:

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)

})

Вы можете адаптировать это для плавания и катания на лыжах.

В настоящее время нет способа использовать конструктор тренировок, чтобы определить дистанцию ​​для других видов активного отдыха, например, гребли.

Я буду подавать радар для этого.

Другие вопросы по тегам