Logo

DigiL17

Loading Light/Dark Toggle

Version 2.0.0

Jakob Haberl
20. November 2024
4 Minuten

Supabase logo


Übersicht

Die Entwicklung von Version 1.0.0 auf 2.0.0 hat zahlreiche wichtige Funktionen eingeführt und bestehende Fehler behoben, um die Benutzererfahrung zu optimieren und die App stabiler sowie benutzerfreundlicher zu gestalten. Das Backend der App wurde im Zuge dieses Updates vollständig neu geschrieben, um dynamische Updates vom Server, den Echtzeit-Austausch von Daten und Benachrichtigungen zu ermöglichen. Um diese Features einfacher implementieren zu können, wurde die bestehende MongoDB-Datenbank mit der ExpressJS API durch ein Supabase-Backend ersetzt. Dieses vereinfacht und stabilisiert viele Funktionen. Es wurden zwei neue APIs implementiert: ein Endpunkt für die Benachrichtigungen mit Firebase und ein weiterer für die Authentifizierung.



Supabase ersetzt das alte Backend

Mit Version 1.1 wurde die Echtzeit-Synchronisierung zwischen Geräten eingeführt. Diese Funktion basiert auf der Nutzung von WebSockets, die es ermöglichen, Änderungen sofort zwischen allen verbundenen Geräten zu synchronisieren. Supabase verfügt hier über das sogenannte "Realtime"-Protokoll, welches diesen Vorgang erheblich erleichtert. Ein weiteres wichtiges Update war die Optimierung des Verhaltens bei Änderungen oder dem Löschen von Kennzeichen und Begleitern. Hier wurden die Datenbankschemata verändert, um ungewollte Inkonsistenzen zu verhindern. Zusätzlich wurden Kartenansichten der Fahrten zwischen Geräten synchronisiert und auf dem Server gespeichert, sodass Nutzer ihre Daten konsistent über alle Geräte hinweg sehen können. Marker, die auf der Karte gesetzt werden, wurden ebenfalls in die Synchronisation einbezogen. Sobald man die Fahrt im Verlauf öffnet, wird die neueste Version vom Server auf das Gerät synchronisiert.



Verbesserter Fahrtenverlauf

Der Verlauf der Fahrten wurde ebenfalls überarbeitet, um Datenverkehr zu sparen. Hierfür wurde ein inkrementelles Laden der Daten implementiert, das nur die jeweils benötigten Abschnitte der Historie lädt, basierend auf Benutzerinteraktionen. Es werden immer nur 15 Fahrten vom Server geladen; scrollt der Nutzer im Verlauf weit genug hinunter, werden weitere Fahrten automatisch geladen. Zudem wurde die Karte der Fahrten angepasst, um Pausen und Abstürze während des Trackings zu erkennen und entsprechend zu visualisieren. Diese Funktionalität greift auf eine Kombination aus Geofence-Tracking, der erstellten KML-Datei und Shared Preferences zurück.



Designverbesserungen

Auch das Design wurde umfassend optimiert. Das responsive Design wurde so angepasst, dass Schaltflächen auch bei aktivierter Textvergrößerung in den Systemeinstellungen sichtbar bleiben. Dies wurde durch dynamische Anpassungen von Layout-Containern und Schriftgrößen mithilfe von Media Queries und einer verbesserten Layout-Logik in Flutter erreicht. Zusätzlich wurde die App für das iPad optimiert, was eine umfassende Anpassung der UI-Komponenten erforderte, um die größere Bildschirmfläche optimal zu nutzen.



Neue Sicherheitsfunktionen

Außerdem wurde das Zurücksetzen des Passworts direkt in der App neu eingeführt, nachdem diese Funktion kurzzeitig nach dem Umstieg auf das Supabase-Backend nicht möglich war. Diese Funktion basiert auf einer sicheren Kommunikation mit einem externen Authentifizierungsdienst, der tokenbasierte Verifizierungsmechanismen nutzt. Gleichzeitig wurden Benachrichtigungen für Prüfungsfahrten und den Ablauf von Theoriekursen implementiert, die mittels Firebase Cloud Messaging (FCM) in Kombination mit benutzerdefinierten Triggern im Backend ausgelöst werden.



Benachrichtigungseinstellungen

Eine eigenständige Benachrichtigungsseite ermöglicht es dem Benutzer nun, individuell zu entscheiden, welche Benachrichtigungen er erhalten möchte. Die Darstellung von Benachrichtigungen wurde so gestaltet, dass Kilometerfahrten und die Gültigkeit von Kursen prominent hervorgehoben werden. Zusätzlich wurden mehrere Fehler im Location-Tracking behoben. Ein Mechanismus zur Absturzerkennung wurde implementiert, der den Status von nicht abgeschlossenen Fahrten speichert und dem Nutzer eine Wiederaufnahme ermöglicht. Dies wurde durch die Implementierung von Shared Preferences realisiert, welche die Tracking-Daten speichert, bis die App wieder stabil läuft.



Dark Mode & überarbeitetes Menü

Generell wurden viele kleinere Fehler behoben, die die Stabilität und Nutzerfreundlichkeit der App beeinflussten. Die Ladezeiten des Dialogs für neue Benutzer wurden durch das Vorladen von Ressourcen optimiert, und das Menü-Design wurde grundlegend überarbeitet. Alle Seiten der App wurden an das neue Menü-Layout angepasst, das eine intuitive Navigation gewährleistet. Darüber hinaus wurde ein Dark Mode eingeführt, der mithilfe von dynamischen Farbpaletten auf Basis von Systempräferenzen und User-Einstellungen funktioniert. Ein Fehler, bei dem der Dialog für neue Benutzer nicht angezeigt wurde, wurde durch eine verbesserte Statusprüfung im Lifecycle-Management der App behoben.



Interaktive Prüfungsfahrten

Weiter besteht jetzt die Möglichkeit, Prüfungsfahrten interaktiv nachzufahren. Diese Funktion befindet sich noch in der Beta-Phase und nutzt eine Kombination aus GPS-Daten, vordefinierten Fahrtrouten und einem Geofencing-Algorithmus. Eine große Herausforderung war hier die Optimierung der Performance, die durch den Einsatz eines neuen Tracking-Pakets bewältigt wurde. Gleichzeitig wurde eine Funktion eingeführt, mit der gelöschte Fahrten für bis zu 30 Tage wiederhergestellt werden können. Diese basiert auf einem Soft-Delete-System, bei dem die Daten lediglich als "gelöscht" markiert, aber nicht sofort entfernt werden.



Fazit

Zusammenfassend haben diese Updates nicht nur neue Funktionen hinzugefügt, sondern auch bestehende Elemente der App stabiler, effizienter und benutzerfreundlicher gemacht.




Patchnotes

Logo

DigiL17

Kontakt

Jakob Haberl

[email protected]

+43 699/16070200