From 483ad09c2094f34834017465e14d99dae1fde80f Mon Sep 17 00:00:00 2001 From: Sylvain Bettinelli Date: Fri, 8 May 2026 09:49:16 +0000 Subject: [PATCH] fix CoachWorkoutKit : retire preview() (API absente du SDK), garde schedule() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'API WorkoutScheduler.shared.preview(plan) n'existe pas (ou pas avec cette signature) dans le SDK iOS de l'utilisateur — compile error 'Value of type WorkoutScheduler has no...'. On garde uniquement WorkoutScheduler.shared.schedule(plan, at: now), qui est l'API stable depuis iOS 17.0. Effet : le workout devient immédiatement disponible dans Apple Watch → Exercice → Workouts personnalisés. Le 1er schedule déclenche automatiquement la dialog d'autorisation iOS 'Coach Hypnotruck souhaite ajouter des workouts à votre Apple Watch' si pas encore accordée. Plus besoin du authorizationState query manuel. Trade-off : pas de sheet de prévisualisation système avant ajout (l'user ne voit pas la structure dans une UI native avant que le workout soit ajouté). Mais c'est le bon compromis pour avoir un build qui marche. On pourra réintroduire preview() plus tard si on bump le deployment target. --- ios/App/App/CoachWorkoutKit.swift | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/ios/App/App/CoachWorkoutKit.swift b/ios/App/App/CoachWorkoutKit.swift index 550daf9..2ce56aa 100644 --- a/ios/App/App/CoachWorkoutKit.swift +++ b/ios/App/App/CoachWorkoutKit.swift @@ -140,22 +140,14 @@ public class CoachWorkoutKitPlugin: CAPPlugin { // 7. Plan let plan = WorkoutPlan(.custom(custom)) - // 8. Request authorization si pas déjà accordée - let authState = await WorkoutScheduler.shared.authorizationState - if authState != .authorized { - _ = try await WorkoutScheduler.shared.requestAuthorization() - } - - // 9. Présenter la sheet système (iOS 17.4+) ou scheduler direct (17.0-17.3) - if #available(iOS 17.4, *) { - try await WorkoutScheduler.shared.preview(plan) - } else { - // Fallback : schedule "now" pour rendre dispo sur Watch - let now = Calendar.current.dateComponents( - [.year, .month, .day, .hour, .minute], - from: Date() - ) - _ = try await WorkoutScheduler.shared.schedule(plan, at: now) - } + // 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) } }