1.1: Home-Screen-Widget + Siri-Kurzbefehl „Gassi gehen"

App Group group.app.banyaro.ios verbindet App und Widget-Extension
(Entitlements in beiden Targets, CODE_SIGN_ENTITLEMENTS fürs Widget).

Home-Screen-Widget (D):
- BanYaroHomeWidget (klein + mittel): Tagesfoto, Hundename, nächster Termin.
- App schreibt beim Heim-Laden einen Snapshot (HomeWidgetData) in die App
  Group und triggert WidgetCenter-Reload; Snapshot wird bei Logout/401 geleert.

Siri-/Kurzbefehl (E):
- StartWalkIntent „Gassi gehen" + AppShortcutsProvider (öffnet die App).
- WalkLauncher überbrückt Intent → UI: Flag in der App Group, beim Aktivwerden
  eingelöst → Aufnehmen-Tab + Aufnahme-Start (TrackingView.startFresh).
- MainTabView mit Tab-Auswahl (Tags), BanYaroGoApp liest scenePhase.
This commit is contained in:
rene 2026-06-02 20:01:16 +02:00
parent a2646a18ef
commit d807db57a2
14 changed files with 307 additions and 6 deletions

View file

@ -0,0 +1,22 @@
import Foundation
/// Kopie im Widget-Target (identisch zur App-Variante). Über die App Group
/// `group.app.banyaro.ios` liest das Widget den von der App geschriebenen Stand.
struct HomeWidgetData: Codable {
var dogName: String
var photoJPEG: Data?
var nextAppointment: String?
var diaryCount: Int?
var updatedAt: Date
}
enum HomeWidgetStore {
static let appGroup = "group.app.banyaro.ios"
static let key = "homeWidgetData"
static func load() -> HomeWidgetData? {
guard let defaults = UserDefaults(suiteName: appGroup),
let data = defaults.data(forKey: key) else { return nil }
return try? JSONDecoder().decode(HomeWidgetData.self, from: data)
}
}