-
Ofereça insights sobre exercícios com as zonas de exercício do HealthKit
Com o HealthKit, é mais fácil oferecer insights sobre exercícios, como frequência cardíaca e zonas de potência para ciclismo, no seu app. Saiba como aproveitar as zonas integradas ou criar zonas personalizadas. Descubra como usar a zona atual e o tempo gasto em cada zona para oferecer orientações úteis durante e após os exercícios.
Capítulos
- 0:01 - Introdução
- 2:17 - Como acessar as zonas de exercício
- 6:19 - Atualizações em tempo real das zonas
- 8:11 - Zonas preferidas
- 9:00 - Zonas personalizadas
Recursos
-
Buscar neste vídeo...
-
-
3:54 - Reading Heart Rate Zones from a completed workout
// Read heart rate zones from the completed workout if let heartRateZoneGroup = workout.zoneGroupsByType?[HKQuantityType(.heartRate)] { let zones = ZoneDisplayData( zoneCount: heartRateZoneGroup.configuration.zones.count, currentZoneIndex: nil, durations: heartRateZoneGroup.zoneDurations.map(\.duration) ) -
7:57 - Handling Live Zone Updates
func workoutBuilder(_ workoutBuilder: HKLiveWorkoutBuilder, didUpdateWorkoutZone zoneUpdate: HKLiveWorkoutZoneUpdate) { guard let zoneGroup = zoneUpdate.zoneGroup else { return } if let currentIndex = zoneUpdate.currentZoneDuration?.zone.index { let data = ZoneDisplayData( zoneCount: zoneGroup.configuration.zones.count, currentZoneIndex: currentIndex, durations: zoneGroup.zoneDurations.map(\.duration) ) Task { @MainActor in self.heartRateZones = data } } } -
9:19 - Check if Preferred Zone has been set
if try await builder.zoneConfiguration(for: HKQuantityType(.heartRate)) == nil { -
9:24 - Create Zone Boundaries
let defaultHeartRateZoneThresholds = [91.0, 114.0, 136.0, 158.0] let bpmUnit = HKUnit.count().unitDivided(by: HKUnit.minute()) let boundaries = defaultHeartRateZoneThresholds.map( {HKQuantity(unit: bpmUnit, doubleValue:$0)} ) -
9:33 - Create Default Workout Zone Configuration
let heartRate = HKQuantityType(.heartRate) let defaultConfiguration = try HKWorkoutZoneConfiguration(quantityType: heartRate, zoneBoundaries: boundaries) -
9:58 - Set Custom Zone Configuration
try await builder.setCustomZoneConfiguration(defaultConfiguration, for: heartRate) } -
10:03 - Begin Data Collection
// Begin data collection let startDate = Date() try await builder.beginCollection(at: startDate)
-