-
Notifications
You must be signed in to change notification settings - Fork 0
Apple Watch
Die Watch-App wurde nativ für watchOS entwickelt und läuft vollständig eigenständig – auch ohne iPhone in der Nähe.
- Features
- Voraussetzungen
- Architektur
- Datensynchronisation
- Offline-Betrieb
- Views
- Komplikation einrichten
- Troubleshooting
| Feature | Beschreibung |
|---|---|
| 🕐 Live-Abfahrten | Echtzeit-Abfahrtstafel direkt am Handgelenk |
| 🚋 Aktive Fahrt | Fortschritt, nächster Halt, Verspätung in Echtzeit |
| 📋 Gespeicherte Verbindungen | Schnellzugriff auf geplante Fahrten |
| 🕐 Zifferblatt-Komplikation | Nächste Abfahrt immer sichtbar |
| 📡 Unabhängiger Betrieb | Direkte API-Abfragen ohne iPhone |
| Anforderung | |
|---|---|
| watchOS | 10.0 oder neuer |
| Apple Watch | Series 4 oder neuer |
| iPhone | Einmalig zum Übertragen der API-Credentials erforderlich |
| Verbindung | Watch mit Cellular oder WLAN für unabhängigen Betrieb |
RNVWatch/
│
├── WatchApp.swift ← @main Einstiegspunkt
├── WatchModels.swift ← Datenstrukturen (Watch-seitig)
├── WatchDemoData.swift ← Testdaten für Xcode Previews
│
├── WatchConnectivityManager.swift ← Empfängt Daten vom iPhone
├── WatchDataManager.swift ← Lokaler Cache & State
├── WatchDirectService.swift ← Direkte GraphQL-Abfragen
│
└── Views/
├── ContentView.swift ← Navigation (TabView)
├── DeparturesView.swift ← Abfahrtstafel
├── ActiveTripView.swift ← Aktive Fahrt mit Fortschritt
└── SavedTripsView.swift ← Gespeicherte Verbindungen
Die Watch erhält Daten auf zwei Wegen:
iPhone App
│
▼ ApplicationContext (persistent)
PhoneConnectivityManager
│
▼ WCSession.default.updateApplicationContext()
─────────── Bluetooth / WiFi ───────────
│
▼
WatchConnectivityManager
│
▼
WatchDataManager (speichert lokal)
│
▼
Watch Views (Update via @Published)
Was synchronisiert wird:
- Aktive Fahrtdaten (Linie, nächster Halt, Verspätung)
- Gespeicherte Verbindungen
- Einstellungen (Suchradius, bevorzugte Haltestellen)
- API-Credentials (einmalig, verschlüsselt)
Wenn keine iPhone-Verbindung besteht, fragt die Watch selbst die API ab:
WatchDirectService
│
├── Liest gecachte Credentials (WatchDataManager)
├── Holt neuen Bearer Token (Azure AD)
└── GraphQL-Request → graphql-sandbox-dds.rnv-online.de
| Szenario | Verhalten |
|---|---|
| iPhone in Reichweite | Daten via WatchConnectivity (Bluetooth) |
| iPhone nicht in Reichweite, Watch mit WLAN/Cellular | Direkte API-Abfragen via WatchDirectService
|
| Kein Netz auf der Watch | Letzte bekannte Abfahrten aus dem Cache |
| Credentials noch nicht übertragen | Hinweis: iPhone-App einmalig starten |
Hinweis: Für den vollständig unabhängigen Betrieb wird eine Apple Watch mit WLAN oder Cellular benötigt. Series 4 und 5 ohne Cellular benötigen eine aktive iPhone-Verbindung für Netzabfragen.
Haupt-Navigation via TabView mit drei Tabs:
-
Abfahrten (
DeparturesView) -
Aktive Fahrt (
ActiveTripView) -
Gespeichert (
SavedTripsView)
Zeigt die nächsten Abfahrten der zuletzt genutzten Haltestelle. Aktualisiert sich automatisch, wenn die App aktiviert wird (.onAppear).
Echtzeit-Anzeige der laufenden Fahrt:
- Aktuelle Haltestelle
- Nächster Halt mit Uhrzeit
- Verspätung (farblich hervorgehoben)
- Fortschrittsbalken
Wird automatisch angezeigt, wenn eine Fahrt über die iPhone-App gestartet wird.
Liste der gespeicherten Verbindungen aus der iPhone-App. Tippt man auf eine Verbindung, werden die nächsten Abfahrten dafür abgefragt.
- Watchface im Edit-Modus öffnen (langes Drücken auf das Zifferblatt)
- Auf Bearbeiten tippen
- Einen Komplikations-Slot antippen
- In der Liste ÖPNV Mannheim suchen und auswählen
- Durch Drücken der Seitentaste bestätigen
Verfügbare Stile:
| Stil | Inhalt |
|---|---|
| Ecke | Nächste Abfahrtszeit |
| Kreis | Liniennummer |
| Rechteckig | Linie + Zeit + Haltestelle |
Die Komplikation aktualisiert sich im Hintergrund alle 15–30 Minuten (watchOS-Limit).
- Stelle sicher, dass die iPhone-App mindestens einmal geöffnet war
- Prüfe ob Watch und iPhone gekoppelt und in Reichweite sind
- Erzwinge einen Sync: In der iPhone-App Abfahrten laden → Watch sollte sich aktualisieren
- Watch benötigt WLAN oder Cellular für unabhängige API-Abfragen
- Prüfe ob die Credentials korrekt übertragen wurden (iPhone-App → Einstellungen → Watch-Sync)
- Die Fahrt muss über die iOS-App gestartet worden sein
-
WatchConnectivityManagerauf dem iPhone muss die Daten senden können - Im Simulator: Sync zwischen iPhone- und Watch-Simulator funktioniert eingeschränkt – auf echten Geräten testen
Home · Einrichtung · Architektur · RNV API · Live Activities · Apple Watch · FAQ · Beitragen
🚀 Einstieg
📐 Technik
📋 Sonstiges