From 310124ad6389851f5a47f45b786c36182c1aac58 Mon Sep 17 00:00:00 2001 From: Millian Lamiaux Date: Sun, 24 May 2026 15:18:11 +0200 Subject: [PATCH] feat: move HealthKit permission to onboarding, remove HR write - 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. --- .../UserInterfaceState.xcuserstate | Bin 77716 -> 77958 bytes .../TabataGo/Resources/Localizable.xcstrings | 116 ++++++++++++++++++ .../TabataGo/Services/HealthKitService.swift | 15 --- .../TabataGo/Utilities/Strings.swift | 6 +- .../TabataGo/ViewModels/PlayerViewModel.swift | 6 +- .../Views/Onboarding/OnboardingView.swift | 77 +++++++++++- 6 files changed, 197 insertions(+), 23 deletions(-) diff --git a/tabatago-swift/TabataGo.xcodeproj/project.xcworkspace/xcuserdata/20015659.xcuserdatad/UserInterfaceState.xcuserstate b/tabatago-swift/TabataGo.xcodeproj/project.xcworkspace/xcuserdata/20015659.xcuserdatad/UserInterfaceState.xcuserstate index 47c9848a9a50d0273acd5d537a1c056ca4cb7655..b38bcd5e2ebee521f3f38f7da8859089bdb7d763 100644 GIT binary patch delta 39705 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

V>+6*e8Y1LgT`xg*Juug${*Ig&u`Lg)xP3 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

6<`3pM^SpVuGRkX6`WvHDvBt)bRP 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%0AO`RZ@B)wkNCKn+&;Tp| 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 diff --git a/tabatago-swift/TabataGo/Resources/Localizable.xcstrings b/tabatago-swift/TabataGo/Resources/Localizable.xcstrings index 1cdc43c..7371e7b 100644 --- a/tabatago-swift/TabataGo/Resources/Localizable.xcstrings +++ b/tabatago-swift/TabataGo/Resources/Localizable.xcstrings @@ -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" diff --git a/tabatago-swift/TabataGo/Services/HealthKitService.swift b/tabatago-swift/TabataGo/Services/HealthKitService.swift index bda8dd3..c916705 100644 --- a/tabatago-swift/TabataGo/Services/HealthKitService.swift +++ b/tabatago-swift/TabataGo/Services/HealthKitService.swift @@ -19,7 +19,6 @@ actor HealthKitService { [ HKWorkoutType.workoutType(), HKQuantityType(.activeEnergyBurned), - HKQuantityType(.heartRate), ] } @@ -87,20 +86,6 @@ actor HealthKitService { try await builder.addSamples([sample]) } - // Heart rate samples (if captured during workout) - if let avgHR = data.averageHeartRate { - let hrType = HKQuantityType(.heartRate) - let hrUnit = HKUnit.count().unitDivided(by: .minute()) - let hrQuantity = HKQuantity(unit: hrUnit, doubleValue: avgHR) - let hrSample = HKQuantitySample( - type: hrType, - quantity: hrQuantity, - start: data.startedAt, - end: data.completedAt - ) - try await builder.addSamples([hrSample]) - } - try await builder.endCollection(at: data.completedAt) guard let workout = try await builder.finishWorkout() else { throw HealthKitError.workoutSaveFailed diff --git a/tabatago-swift/TabataGo/Utilities/Strings.swift b/tabatago-swift/TabataGo/Utilities/Strings.swift index 8750a73..07e7c8b 100644 --- a/tabatago-swift/TabataGo/Utilities/Strings.swift +++ b/tabatago-swift/TabataGo/Utilities/Strings.swift @@ -175,7 +175,11 @@ enum L10n { static let pill4MinWorkouts = LocalizedStringResource("onboarding.pill4MinWorkouts") static let pillNoEquipment = LocalizedStringResource("onboarding.pillNoEquipment") static let pillVoiceGuided = LocalizedStringResource("onboarding.pillVoiceGuided") - static let tabataDesc = LocalizedStringResource("onboarding.tabataDesc") + static let healthAccess = LocalizedStringResource("onboarding.healthAccess") + static let healthAccessSubtitle = LocalizedStringResource("onboarding.healthAccessSubtitle") + static let allowHealthAccess = LocalizedStringResource("onboarding.allowHealthAccess") + static let notNow = LocalizedStringResource("onboarding.notNow") + static let tabataDesc = LocalizedStringResource("onboarding.tabataDesc") enum levelDesc { static let beginner = LocalizedStringResource("onboarding.level.beginnerDesc") diff --git a/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift b/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift index 69ba7b5..087cd8c 100644 --- a/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift +++ b/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift @@ -137,7 +137,11 @@ final class PlayerViewModel: ObservableObject { // Start HealthKit live session Task { - try? await HealthKitService.shared.requestAuthorization() + guard await HealthKitService.shared.isAuthorized else { + print("[PlayerVM] HealthKit not authorized — skipping live session") + return + } + liveSession.onHeartRateUpdate = { [weak self] hr in Task { @MainActor in self?.heartRate = hr } } diff --git a/tabatago-swift/TabataGo/Views/Onboarding/OnboardingView.swift b/tabatago-swift/TabataGo/Views/Onboarding/OnboardingView.swift index 1327120..c9affb6 100644 --- a/tabatago-swift/TabataGo/Views/Onboarding/OnboardingView.swift +++ b/tabatago-swift/TabataGo/Views/Onboarding/OnboardingView.swift @@ -12,7 +12,7 @@ struct OnboardingView: View { @Environment(\.modelContext) private var context enum Step: Int, CaseIterable { - case welcome, name, level, goal, frequency, ready + case welcome, name, level, goal, frequency, health, ready var progress: Double { Double(rawValue) / Double(Step.allCases.count - 1) } } @@ -67,6 +67,7 @@ struct OnboardingView: View { case .level: LevelStep(selection: $fitnessLevel) case .goal: GoalStep(selection: $goal) case .frequency: FrequencyStep(frequency: $weeklyFrequency, barriers: $selectedBarriers, allBarriers: barriers) + case .health: HealthStep(onContinue: { advance() }) case .ready: ReadyStep(name: name) } } @@ -77,11 +78,13 @@ struct OnboardingView: View { .animation(.spring(duration: 0.45), value: step) // ── Pinned bottom button ───────────────────────── - PrimaryButton(label: buttonLabel, action: buttonAction) - .disabled(step == .name && name.trimmingCharacters(in: .whitespaces).isEmpty) - .padding(.horizontal, 32) - .padding(.bottom, 48) - .padding(.top, 16) + if step != .health { + PrimaryButton(label: buttonLabel, action: buttonAction) + .disabled(step == .name && name.trimmingCharacters(in: .whitespaces).isEmpty) + .padding(.horizontal, 32) + .padding(.bottom, 48) + .padding(.top, 16) + } } } } @@ -411,6 +414,68 @@ private struct FrequencyStep: View { } } +private struct HealthStep: View { + let onContinue: () -> Void + @State private var isRequesting = false + @State private var appeared = false + + var body: some View { + VStack(spacing: 36) { + Spacer() + + Image(systemName: "heart.text.square") + .font(.system(size: 80)) + .foregroundStyle(Theme.brand.gradient) + + OnboardingHeader(title: L10n.onboarding.healthAccess, subtitle: L10n.onboarding.healthAccessSubtitle) + + // Primary button — reuses shared PrimaryButton component + PrimaryButton(label: L10n.onboarding.allowHealthAccess, action: requestHealthAccess) + .disabled(isRequesting) + .padding(.horizontal, 32) + + // Skip option + Button { + onContinue() + } label: { + Text(L10n.onboarding.notNow) + .font(.subheadline.weight(.medium)) + .foregroundStyle(.secondary) + } + .buttonStyle(.plain) + .disabled(isRequesting) + + Spacer() + } + .opacity(appeared ? 1 : 0) + .offset(y: appeared ? 0 : 14) + .onAppear { + withAnimation(.spring(duration: 0.45)) { appeared = true } + } + } + + private func requestHealthAccess() { + guard !isRequesting else { return } + isRequesting = true + Task { + do { + try await HealthKitService.shared.requestAuthorization() + } catch { + print("[HealthStep] HealthKit authorization error: \(error)") + // Continue — user can try later in Settings + } + let authorized = await HealthKitService.shared.isAuthorized + if authorized { + AnalyticsService.shared.healthKitPermissionGranted() + } else { + AnalyticsService.shared.healthKitPermissionDenied() + } + isRequesting = false + onContinue() + } + } +} + private struct ReadyStep: View { let name: String @State private var showContent = false -- 2.49.1