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)
})
Вы можете адаптировать это для плавания и катания на лыжах.
В настоящее время нет способа использовать конструктор тренировок, чтобы определить дистанцию для других видов активного отдыха, например, гребли.
Я буду подавать радар для этого.