Backlog #3-C — Détecte la fin d'une séance Apple Watch (ajout d'un
nouveau HKWorkout au HealthStore) et push une notif locale enrichie
'🎉 Séance {sport} terminée — {min}min · {kcal}kcal · {km}km'.
Nouveau plugin natif CoachWorkoutObserver.swift :
- requestAuthorization (lecture HKWorkout) — idempotent, ne re-prompt
pas si déjà autorisé via @capgo/capacitor-health.
- enableBackgroundDelivery(.immediate) sur HKWorkoutType — iOS réveille
l'app dès qu'un nouveau workout est ajouté.
- HKObserverQuery callback → fetchLatestWorkout (filtre 1h) → schedule
UNNotificationRequest immédiat.
- Dédup via UserDefaults (lastNotifiedUUID) pour éviter doublons quand
iOS rappelle l'observer plusieurs fois pour le même workout.
- Workaround Swift 15.0 deployment target : withCheckedThrowingContinuation
pour wrapper les APIs callback-only (requestAuthorization /
enableBackgroundDelivery existent en async/await mais iOS 15.4+ only).
Signatures Apple vérifiées via JSON DocC :
- requestAuthorization(toShare:read:completion:) ✓
- enableBackgroundDelivery(for:frequency:withCompletion:) ✓
- HKObserverQuery(sampleType:predicate:updateHandler:) ✓
- HKSampleSortIdentifierEndDate (global String) ✓
Bump version requis côté Mac avant rebuild TestFlight.
⚠️ Capability Xcode requise lors du rebuild Mac : Signing & Capabilities
→ HealthKit → cocher 'Background Delivery'. Sans ça, iOS ne réveille
pas l'app quand un workout se termine.