fix CoachWorkoutKit : retire preview() (API absente du SDK), garde schedule()

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.
This commit is contained in:
Sylvain Bettinelli
2026-05-08 09:49:16 +00:00
parent cfa6a8bb52
commit 483ad09c20

View File

@@ -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
// 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)
}
}
}