feat(live): Live Activity / Dynamic Island (WidgetKit extension iOS 16.2+/17+)
Nouvelle target "CoachLiveActivity" (Widget Extension, bundle ch.hypnotruck.coach.LiveActivity, iOS 17.0) embarquée dans App via copy phase "Embed App Extensions" (dstSubfolderSpec=13). API ActivityKit + WidgetKit vérifiées sur SDK iOS 26.5 swiftinterface (Activity.request(content:), ActivityConfiguration, DynamicIsland(expanded:compactLeading:trailing:minimal:)). Architecture : - CoachLiveActivityAttributes (modèle partagé App ↔ extension) - CoachLiveActivityWidget (Lock Screen + Dynamic Island UI) - CoachLiveActivityBundle (@main WidgetBundle) - LiveActivityManager (App side, wrap Activity.request/update/end) - LiveStore hook : start sur 1er sample, update à chaque ingest, end après 60s "lost". Tout guardé @available(iOS 16.2, *) pour préserver deployment iOS 15. - Info.plist App : NSSupportsLiveActivities = YES. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
13
ios/App/CoachLiveActivity/CoachLiveActivityBundle.swift
Normal file
13
ios/App/CoachLiveActivity/CoachLiveActivityBundle.swift
Normal file
@@ -0,0 +1,13 @@
|
||||
// CoachLiveActivityBundle.swift
|
||||
// Entry point @main de l'extension WidgetKit. Contient le ou les Widgets
|
||||
// exposés par cette extension. Ici juste la Live Activity du live workout.
|
||||
|
||||
import WidgetKit
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct CoachLiveActivityBundle: WidgetBundle {
|
||||
var body: some Widget {
|
||||
CoachLiveActivityWidget()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user