Zum Inhalt springen
Zurück zu den Projekten
In Arbeit2026

Tischzeit

iOS-App, die die Familie zum Essen ruft. Swift 6, CloudKit, null externe Abhängigkeiten.

Abhängigkeiten
0
Plattform
iOS 18+
Backend
CloudKit

Über das Projekt

Ein kleines Problem mit einer überraschend unangenehmen technischen Lösung: Jemand kocht, das Essen ist fertig, und alle anderen sitzen mit Kopfhörern in ihren Zimmern. Tischzeit schickt allen einen Ruf aufs Handy — eine zeitkritische Mitteilung, die auch im Fokus-Modus durchkommt.

Die App läuft komplett auf Apple-Frameworks: Swift 6 mit strikter Nebenläufigkeitsprüfung, SwiftUI, CloudKit als Backend, Swift Testing für die Tests. Keine einzige externe Abhängigkeit — kein Firebase, kein eigener Server, kein Account. Die Familie teilt eine CloudKit-Zone, das ist die gesamte Infrastruktur.

Genau daraus entstand die interessante Aufgabe. CloudKit unterstützt in der geteilten Datenbank keine Push-Nachrichten mit Alert — dort gibt es nur stille Benachrichtigungen. Für den Besitzer der Zone funktioniert der direkte Weg über die private Datenbank, für alle anderen nicht. Die Lösung sind zwei getrennte Zustellwege: Der Besitzer bekommt einen echten Alert-Push, den eine Notification Service Extension aufwertet; die Mitglieder bekommen einen stillen Push, der die App weckt, woraufhin diese die Mitteilung lokal selbst erzeugt.

Damit dabei niemand zwei Benachrichtigungen für denselben Ruf bekommt, meldet die CloudKit-Schicht das Ereignis nur im Fall der geteilten Datenbank an die App weiter. Ein zweiter Fallstrick liegt in derselben Ecke: CloudKit kann Pushes nicht gezielt an einzelne Geräte adressieren, es gibt nur "alle Abonnenten der Zone". Wer also erneut ruft, würde auch sich selbst benachrichtigen — die Entscheidung, ob eine Mitteilung angezeigt wird, trifft deshalb jedes Gerät für sich.

Das Projekt ist ein gutes Beispiel dafür, warum ich Plattform-Einschränkungen mag: Sie zwingen zu einer Architektur, die man sich sonst nicht überlegt hätte.