feat: move HealthKit permission to onboarding, remove HR write
All checks were successful
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped

- Add .health step to onboarding between frequency and ready
- HealthStep with non-blocking permission flow (Not Now skips)
- Remove requestAuthorization() from PlayerViewModel.startWorkout()
- Guard live session start with isAuthorized check
- Remove heart rate write from HealthKit authorization popup
- Remove HR sample writing from saveWorkout (now without permission)
- Add L10n keys: healthAccess, healthAccessSubtitle, allowHealthAccess, notNow
- Add EN/DE/ES/FR translations
- Track permission decisions through analytics
- Entry animation on HealthStep (fade-in + slide-up)

HealthKit permission is now asked once during onboarding,
never interrupting workouts again.
This commit is contained in:
Millian Lamiaux
2026-05-24 15:18:11 +02:00
parent 72ad247136
commit 310124ad63
6 changed files with 197 additions and 23 deletions

View File

@@ -6425,6 +6425,122 @@
}
}
}
},
"onboarding.allowHealthAccess" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Health-Zugriff erlauben"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Allow Health Access"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Permitir acceso a Salud"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Autoriser l'accès à Santé"
}
}
}
},
"onboarding.healthAccess" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mit Apple Health verbinden"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Connect to Apple Health"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Conectar con Apple Salud"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Connecter à Apple Santé"
}
}
}
},
"onboarding.healthAccessSubtitle" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Verfolge Kalorien und Herzfrequenz. Speichere Workouts in der Health App. Deine Daten bleiben privat und auf deinem Gerät."
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Track calories and heart rate. Save workouts to your Health app. Your data stays private and on-device."
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Registra calorías y frecuencia cardíaca. Guarda entrenamientos en la app Salud. Tus datos permanecen privados y en tu dispositivo."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Suivez les calories et la fréquence cardiaque. Enregistrez vos entraînements dans l'app Santé. Vos données restent privées et sur votre appareil."
}
}
}
},
"onboarding.notNow" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nicht jetzt"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Not Now"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ahora no"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pas maintenant"
}
}
}
}
},
"version" : "1.0"