Skip to content

Apple Watch

I767513 edited this page May 10, 2026 · 2 revisions

Apple Watch App

Die Watch-App wurde nativ für watchOS entwickelt und läuft vollständig eigenständig – auch ohne iPhone in der Nähe.


Inhaltsverzeichnis

  1. Features
  2. Voraussetzungen
  3. Architektur
  4. Datensynchronisation
  5. Offline-Betrieb
  6. Views
  7. Komplikation einrichten
  8. Troubleshooting

1. Features

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

2. Voraussetzungen

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

3. Architektur

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

4. Datensynchronisation

Die Watch erhält Daten auf zwei Wegen:

Weg 1: WatchConnectivity (iPhone → Watch)

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)

Weg 2: Direkte API-Abfragen (Watch → RNV)

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

5. Offline-Betrieb

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.


6. Views

ContentView

Haupt-Navigation via TabView mit drei Tabs:

  1. Abfahrten (DeparturesView)
  2. Aktive Fahrt (ActiveTripView)
  3. Gespeichert (SavedTripsView)

DeparturesView

Zeigt die nächsten Abfahrten der zuletzt genutzten Haltestelle. Aktualisiert sich automatisch, wenn die App aktiviert wird (.onAppear).

ActiveTripView

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.

SavedTripsView

Liste der gespeicherten Verbindungen aus der iPhone-App. Tippt man auf eine Verbindung, werden die nächsten Abfahrten dafür abgefragt.


7. Komplikation einrichten

  1. Watchface im Edit-Modus öffnen (langes Drücken auf das Zifferblatt)
  2. Auf Bearbeiten tippen
  3. Einen Komplikations-Slot antippen
  4. In der Liste ÖPNV Mannheim suchen und auswählen
  5. 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).


8. Troubleshooting

Watch zeigt keine Abfahrten

  1. Stelle sicher, dass die iPhone-App mindestens einmal geöffnet war
  2. Prüfe ob Watch und iPhone gekoppelt und in Reichweite sind
  3. Erzwinge einen Sync: In der iPhone-App Abfahrten laden → Watch sollte sich aktualisieren

„Keine Verbindung" auf der Watch

  • 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)

Aktive Fahrt wird nicht angezeigt

  • Die Fahrt muss über die iOS-App gestartet worden sein
  • WatchConnectivityManager auf dem iPhone muss die Daten senden können
  • Im Simulator: Sync zwischen iPhone- und Watch-Simulator funktioniert eingeschränkt – auf echten Geräten testen