Restore preview() (iOS 17.4+) pour ajouter dans Custom Workouts Apple Watch
schedule() (iOS 17.0+) que j'utilisais met le workout dans la Schedule (le
calendrier Fitness iOS) → utile pour 'demain à 14h je fais cette séance' mais
pas pour 'mets cette séance dans ma bibliothèque, je la lancerai quand'.
preview() (iOS 17.4+) ouvre une sheet système 'Ajouter à mes workouts' qui
ajoute la séance dans **Custom Workouts** de l'Apple Watch — accessible via
Workout app → Course → Custom Workouts → [séance].
Ajouts :
- requestAuthorization() en amont (idempotent, déclenche dialog iOS la 1re fois)
- if #available(iOS 17.4) → preview(plan)
else → schedule(plan, at: now) en fallback (rare car iOS 17.0-17.3)
- NSLog('[CoachWorkoutKit] ...') pour visibilité Console.app au cas où
L'erreur compile précédente sur preview() venait probablement des autres
problèmes API (WorkoutAlertEnumeration, IntervalStep init), maintenant tous
réglés. preview() devrait compiler proprement avec ce build.
This commit is contained in:
@@ -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.
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user