diff --git a/ios/App/App/CoachWorkoutKit.swift b/ios/App/App/CoachWorkoutKit.swift index e694f9b..9057d21 100644 --- a/ios/App/App/CoachWorkoutKit.swift +++ b/ios/App/App/CoachWorkoutKit.swift @@ -149,14 +149,29 @@ public class CoachWorkoutKitPlugin: CAPPlugin, CAPBridgedPlugin { // 7. Plan let plan = WorkoutPlan(.custom(custom)) - // 8. Schedule pour "maintenant" — l'API la plus stable iOS 17.0+. - // Le workout devient immédiatement disponible dans Apple Watch → - // Exercice → Workouts personnalisés. Le 1er schedule déclenche la - // demande d'autorisation native si besoin. - let now = Calendar.current.dateComponents( - [.year, .month, .day, .hour, .minute], - from: Date() - ) - _ = try await WorkoutScheduler.shared.schedule(plan, at: now) + // 8. Demande d'autorisation explicite (idempotent — déclenche dialog + // iOS la 1re fois, return immédiat si déjà accordé). + do { + try await WorkoutScheduler.shared.requestAuthorization() + } catch { + NSLog("[CoachWorkoutKit] requestAuthorization failed: \(error)") + } + + // 9. preview(plan) (iOS 17.4+) ouvre la sheet système 'Ajouter à + // mes workouts' qui ajoute le workout à la **Custom Workouts** + // library de l'Apple Watch (vs schedule() qui le met juste dans + // le calendrier Fitness sans le rendre lançable de manière standalone). + if #available(iOS 17.4, *) { + try await WorkoutScheduler.shared.preview(plan) + } else { + // Fallback iOS 17.0-17.3 : schedule pour "maintenant". + // L'user verra le workout dans le Workout app au lancement (top + // de la liste des activités) mais pas dans Custom Workouts. + let now = Calendar.current.dateComponents( + [.year, .month, .day, .hour, .minute], + from: Date() + ) + _ = try await WorkoutScheduler.shared.schedule(plan, at: now) + } } }