diff --git a/tabatago-swift/TabataGo/Resources/TabataGo.entitlements b/tabatago-swift/TabataGo/Resources/TabataGo.entitlements index 800b1a1..7169ba0 100644 --- a/tabatago-swift/TabataGo/Resources/TabataGo.entitlements +++ b/tabatago-swift/TabataGo/Resources/TabataGo.entitlements @@ -8,6 +8,8 @@ health-records + aps-environment + development com.apple.security.application-groups diff --git a/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift b/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift index ec53046..88641a7 100644 --- a/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift +++ b/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift @@ -455,8 +455,12 @@ final class PlayerViewModel: ObservableObject { ) liveActivityError = nil observeActivityState() + } catch let authError as ActivityAuthorizationError { + liveActivityError = "Live Activities: \(authError.localizedDescription)" } catch { - liveActivityError = error.localizedDescription + let msg = error.localizedDescription + let truncated = msg.count > 200 ? String(msg.prefix(200)) + "…" : msg + liveActivityError = "Live Activity error: \(truncated)" print("❌ Failed to start Live Activity: \(error.localizedDescription)") } } diff --git a/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift b/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift index 59441fe..cdcc2e4 100644 --- a/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift +++ b/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift @@ -553,7 +553,7 @@ struct WorkoutLiveActivity: Widget { .contentMargins(.leading, 8, for: .expanded) .contentMargins(.trailing, 8, for: .expanded) .contentMargins(.bottom, 6, for: .expanded) - .widgetURL(URL(string: "tabatago://workout")!) + .widgetURL(URL(string: "tabatago://workout") ?? URL(string: "about:blank")!) } .supplementalActivityFamilies([.small, .medium]) } diff --git a/tabatago-swift/project.yml b/tabatago-swift/project.yml index 7f7d5db..136052b 100644 --- a/tabatago-swift/project.yml +++ b/tabatago-swift/project.yml @@ -76,6 +76,8 @@ targets: - target: TabataGoWatch embed: true + - target: TabataGoWidget + embed: true settings: base: PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago @@ -156,6 +158,31 @@ targets: TARGETED_DEVICE_FAMILY: "4" WATCHOS_DEPLOYMENT_TARGET: "11.0" + TabataGoWidget: + type: app-extension + platform: iOS + deploymentTarget: "26.0" + sources: + - path: TabataGoWidget + excludes: + - "**/.DS_Store" + info: + path: TabataGoWidget/Info.plist + properties: + CFBundleDisplayName: TabataGoWidget + CFBundleShortVersionString: "1.0" + CFBundleVersion: "2" + NSExtension: + NSExtensionPointIdentifier: com.apple.widgetkit-extension + NSSupportsLiveActivities: true + NSSupportsLiveActivitiesFrequentUpdates: true + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago.widget + IPHONEOS_DEPLOYMENT_TARGET: "26.0" + TARGETED_DEVICE_FAMILY: "1" + ENABLE_PREVIEWS: YES + TabataGoTests: type: bundle.unit-test platform: iOS @@ -185,6 +212,7 @@ schemes: build: targets: TabataGo: all + TabataGoWidget: all run: config: Debug archive: