Gleicher Auftraggeber wie bei Certilife, anderes Vertikal. Brightmall ist die Commerce-Seite — ein web-first ausgelegter Storefront, der in eine iOS-App eingewickelt wird, damit er auf dem Homescreen sitzen, im App Store erscheinen und die plattformspezifischen Verantwortlichkeiten tragen kann, die das Web allein nicht abdeckt.
Die Anwendung ist in Swift mit UIKit und Combine geschrieben, mit einer reinen SPM-Abhängigkeitsfläche. Die Native-Shell übernimmt Login, Push-Benachrichtigungen, Datei-Download, Deep-Links und App-Store-Compliance; der Storefront selbst ist eine WebView-Surface, die vom Web-Origin geliefert wird.
Web und App kommunizieren über ein festgelegtes Nachrichtenprotokoll. Der Storefront ruft die Shell über eine Handvoll benannter Nachrichten — Anmelden, Abmelden, einen Anruf starten, das Sitzungstoken übergeben — und die Shell antwortet, indem sie definierte Funktionen auf der Seite zurückruft. Das Token selbst wohnt auf der nativen Seite, im iOS-Keychain, und wird bei jedem Seitenaufruf neu in die Web-Schicht eingepflanzt — deshalb bleibt der Storefront angemeldet, egal wohin navigiert wird.
Geschäftsdokumente aus der Web-Schicht werden abgefangen und als native Downloads abgelegt, mit einem Toast als Quittung. Ein Verbindungswächter beobachtet das Netz und lädt den Storefront — Token inklusive — in dem Moment neu, in dem eine tote Verbindung zurückkehrt. Alle Storefront-Tabs teilen sich einen einzigen Web-Prozess-Pool, sodass der Login-Zustand über den ganzen Shop hinweg kohärent bleibt. Selbst die Frage nach der Push-Berechtigung ist ein eigens gestalteter Moment: ein nativer Screen erklärt, wozu Benachrichtigungen gut sind, bevor iOS überhaupt seinen Systemdialog zeigt. Diesen Bildschirm habe ich mit SwiftUI innerhalb der UIKit-App umgesetzt.
Derselbe Quellcode wird gegen mehrere Serverumgebungen ausgeliefert, umgeschaltet zur Compile-Zeit — interne Tester laufen durch den Staging-Storefront, während der App-Store-Build auf die Produktion zeigt.
