Plattformübergreifende, mobile Unternehmensanwendung

Plattformübergreifende, mobile Unternehmensanwendung

Itransition nutzte Flutter, um eine plattformübergreifende App zu entwickeln, die die Gewährung von Unternehmensrabatten rationalisiert und die Veranstaltungsanmeldung digitalisiert. 80 % der Mitarbeiter haben die App heruntergeladen, 95 % der Nutzer sind mit ihr zufrieden und 20 % mehr Mitarbeiter nutzen die Rabatte.

Hintergrund

Itransition ist ein international agierendes Unternehmen mit mehr als 3.000 Mitarbeitern in über 10 Ländern mit einer komplexen internen Struktur und mehreren Web-Apps und Social-Media-Plattformen, die Informationen über Arbeit und Freizeitaktivitäten wie Mitarbeiterzertifizierungen, Qualifikationen, Veranstaltungen und Unternehmensrabatte enthalten.

Im Laufe der Jahre hat Itransition mit vielen Unternehmen zusammengearbeitet, um Rabatte auf Bildung, Restaurantbesuche, Reisen, Fitness, Unterhaltung und andere Dienstleistungen anbieten zu können. Die mehr als 200 Rabatte wurden in den sozialen Medien der Unternehmen und in unserem Wiki aufgelistet, aber dennoch war es für die Nutzer schwierig, ihren Wert nachzuverfolgen. Außerdem hatten wir viele wiederkehrende Veranstaltungen, an denen mehr als 1.000 Personen gleichzeitig an einem Ort teilnahmen. Daher wollten wir die Ticketausgabe und die Identifizierung der Mitarbeiter bei der Veranstaltung vereinfachen sowie die Bereitstellung von Rabatten automatisieren und digitalisieren.

Das Itransition-Team entwickelte eine Android-App, um das Konzept zu testen, und fügte dann eine iOS-Version hinzu, um die gesamte Nutzerbasis abzudecken. Das Feedback, das wir von 85 % der Nutzer erhielten, war eindeutig: eine einzige App zu entwickeln, die alle Funktionen in einer Lösung vereint. Ziel der App war es, Geschäftsprozesse effektiver zu gestalten und die Nutzererfahrung durch nahtlose Aktualisierungen von unterwegs zu verbessern.

Lösung

Wir haben eine plattformübergreifende Flutter-App entwickelt, um alle Inhalte zu Rabatten und Angeboten zu zentralisieren, als Ticketsystem bei Veranstaltungen zu dienen und unsere Unternehmens-Web-Apps mit Informationen zu Gehältern, Urlauben, Mitarbeiterprofilen, Sozialleistungen und Unternehmensartikeln zu spiegeln.

Die Itransition App kann von den Mitarbeitern des Unternehmens heruntergeladen und genutzt werden. Wir haben auch ein Admin-Panel entwickelt, um die App zu unterstützen und den App-Nutzern verschiedene Zugänge zu gewähren. Die Benutzer des Admin-Panels sind reguläre Admins mit Zugriffsrechten auf Module sowie Super-Admins, die den regulären Admins Zugriffsrechte erteilen. Der Geschäftsinhaber der App ist die PR-Abteilung, die dem Entwicklungsteam neue Funktionen und Module vorschlägt.

Itransition’s app architecture

Die ersten Module, die entwickelt wurden, sind die Module für Veranstaltungen und Ermäßigungen. Zukünftig sollen noch Module für Mitarbeiterprofile, Sozialleistungen, Urlaub, Gehalt und Merch hinzugefügt werden. Die bestehenden und geplanten Module enthalten Daten aus den Websystemen des Unternehmens, wie dem Mitarbeiterportal, dem Wiki für Sozialleistungen und der Social-Media-Seite für Rabatte.

Mit dem Veranstaltungsmodul können die Nutzer Firmenveranstaltungen verfolgen und sich dafür anmelden, den persönlichen QR-Code bei der Veranstaltung zur Überprüfung der Mitarbeiter einscannen, Informationen über den Veranstaltungsort abrufen, den Ort auf der Karte nachschlagen, den Shuttle-Fahrplan für die Veranstaltung abfragen und vieles mehr.

Home screen
Calendar screen
My tickets screen
Map screen

Das Rabattmodul enthält Informationen über die Kooperationen und Rabatte in den folgenden Kategorien: Automobile, Kinder, Lebensmittellieferungen, Gesundheit, Restaurants, Einkaufen, Bildung, Unterhaltung, Wellness, Sport, Baumaterialien und Tourismus. Die Startseite enthält eine Registerkarte "Favoriten", die digitale Version der Itransition-Rabattkarte und Filter. Die Nutzer können sich ihre Rabatte nach Kategorien, in alphabetischer Reihenfolge oder auf der Karte anzeigen lassen.

Discounts - Home
Discounts - Education
Discounts - Map
Discounts - Auto

Analytik

Das Projektteam nutzt App-Analysen, um Feedback zu sammeln und die wichtigsten neuen Module zu entwickeln, die strategische App-Entwicklung zu planen, die am meisten gewünschten Funktionen für jedes Modul auszuwählen und die allgemeine Benutzererfahrung zu verbessern. Für die Verfolgung von Metriken haben wir uns für Google Analytics entschieden, da es umfangreiche Funktionen zur Erstellung von Grafiken für intuitive Analysen bietet.

Neben Google Analytics-Metriken wie Nutzerzahl, Altersdemografie, Geolokalisierung und Betriebssysteme sammeln  wir kontinuierlich Metriken, um die Beliebtheit und Relevanz der App zu verfolgen, Prozesse zu beschleunigen sowie Ressourcen und Kosten bei der Organisation von Veranstaltungen und Rabatten zu sparen. Wir nutzen die Metriken ebenfalls, um die App stetig zu verbessern und Entwicklungsentscheidungen zu treffen, die die entstehenden Nutzerbedürfnisse vorhersagen

Metriken zur App-Nutzung Geschäftseinblicke
Aktive tägliche/wöchentliche/monatliche Nutzer Relevanz und Nützlichkeit der App

Sitzungen
Durchschnittliche Sitzungsdauer
Durchschnittliche Anzahl von Bildschirmen pro Sitzung

Einfachheit und Benutzerfreundlichkeit der Anwendung
Benutzerbindung und Verweildauer

Benutzerpfade
Pfadmuster
Zeit auf der Seite

Benutzerfreundlichkeit der Navigation

Nutzerbindung
Ereignisse pro Sitzung

Relevanz und Beliebtheit von Apps

Demografie der Veranstaltung
Veranstaltungsort

Nutzerdemografie von Unternehmensveranstaltungen
Geräte, Betriebssysteme und Versionen Künftige Entwicklungsprioritäten korrigieren

Um die künftige Entwicklung zu planen, die Bedürfnisse der Nutzer zu erfüllen und unsere Prioritäten richtig zu setzen, achten wir auf Kennzahlen wie die beliebtesten App-Funktionen, zu den Favoriten hinzugefügte Funktionen, die Abwanderungsrate und die Nutzerbindungsrate. Wir verfolgen auch die Beschleunigung von Prozessen wie die Zeitersparnis bei der Veranstaltungsanmeldung. Da das Unternehmen weltweit wächst, verfolgen wir die verwendeten Sprachen, um die Lokalisierungsbemühungen zu priorisieren.

Neben den geschäftlichen Metriken erfassen wir auch technische Metriken wie die Anzahl der absturzfreien Nutzungen, um die Leistung der App und Absturzprobleme zu bewerten, Absturzursachen zu finden und Korrekturen und Umgehungen bereitzustellen.

Einige der metrischen Berechnungen mussten vom Business Analytics Team angepasst werden. Um die Abwanderungsrate zu berechnen, haben wir einen Workaround entwickelt, der die GA-API und den lokalen Speicher nutzt. Das System zeigt die Abwanderungsrate für die folgenden Zeiträume an: Tag, Woche, Monat und Jahr. Wir mussten auch die Metriken für die Benutzerbindung nach Zeiträumen berechnen. Das System vergleicht die Anzahl der aktiven Nutzer zu Beginn und am Ende eines bestimmten Zeitraums und berechnet die Kundenbindungsrate nach folgender Formel: 'Aktive Nutzer' / 'Tag-1-Nutzer' x 100.

Technologien und Tools

Das Team von Itransition entwickelte ein Flutter-Frontend mit einem Dart-Backend. Wir haben uns für Flutter entschieden, da es sich am besten für Business-Apps eignet, die keine ressourcenintensiven Vorgänge aufweisen wie AR/VR. Außerdem haben wir die folgenden Vorteile bei Flutter festgestellt:

  • Eine einzige Code-Basis für die Frontend-Webentwicklung, die es uns ermöglicht, die Frontend-Entwicklung für die Entwicklung von Web-Apps zu unterstützen, die wir in die künftige Itransition-App-Suite von mobilen und Web-Apps aufnehmen können.
  • Durch die Möglichkeit, Dart sowohl für die Frontend- als auch für die Backend-Entwicklung zu verwenden, kann das gesamte Projekt (den Frontend-/Backend-Client und den Admin-Client) mit nur einem Team abgedeckt werden.
  • Schnell wachsende Technologie mit stets neuen Verbesserungen und Bibliotheken, die das Hinzufügen neuer Funktionen zur App sowie die Umsetzung neuer Ideen schnell ermöglichen.
  • Natives Erscheinungsbild auch auf älteren Android- und iOS-Versionen, sodass wir allen unseren Nutzern das gleiche nahtlose Erlebnis bieten können.
  • 118.000 Dokumentationen auf pub.dev, mit ständigen Updates der Wissensdatenbank, wodurch wir unsere Fähig- und Fertigkeiten stets erweitern können.
  • Ein Ökosystem von 2.000 gebrauchsfertigen Paketen, die sofort verwendet werden können.

Neben Dart verwenden wir nativen Code für Push-Benachrichtigungen, der den Anforderungen von Apple und Google entspricht.

Da das Backend der vorherigen Apps in Firebase geschrieben wurde, haben wir Firebase-Bibliotheken auf Dart verwendet, um mit Backend-Quellen zu kommunizieren und Rabatte von Shops herunterzuladen. Für die Lokalisierung verwendeten wir die Standardlokalisierung von Flutter. Für einige Nicht-Firebase-Anfragen haben wir Dio verwendet, einen HTTP-Client für Dart, der Interceptors, globale Konfiguration, FormData, Request Cancellation, File Downloading und Timeout unterstützt, sodass wir all dies durchführen können, ohne einen separaten Manager schreiben zu müssen, was sowohl Zeit als auch Geld spart. Um Daten lokal in der Datenbank zu speichern, verwenden wir die SQFlite-Bibliothek.

Wir haben uns für eine Architektur mit geringer Konnektivität entschieden, da wir weitere Module hinzufügen möchten, um die App zu skalieren. Die gewählte Architektur ermöglicht es uns, Module je nach Region mühelos zu verbinden oder zu trennen und Anpassungen auf der Grundlage der in die Datenbank geladenen Daten einzurichten. Wir haben GetIt als Service Locator verwendet. Wir haben auch sichergestellt, dass jede Schicht unabhängig voneinander ist, was die Entwicklung, das Hinzufügen neuer Module und die Skalierung der App einfacher und schneller macht.

Das Team verwendete Flutter Best Practices für den Entwicklungsprozess. Wir richteten CI für das Projekt ein, um es zu automatisieren und den manuellen Aufwand zu minimieren. Das Team führte eine statische Analyse des Dart-Codes mit Dart Analyzer durch. Außerdem haben wir Unit- und Integrationstests durchgeführt. Nachdem diese Schritte erfolgreich umgesetzt worden waren und wir die nötigen Genehmigungen erhalten hatten, fuhren wir mit der Zusammenführung fort. Die Beta-Tests der App wurden von den Spezialisten von Itransition durchgeführt, wobei kleinere Fehler entdeckt und behoben wurden, woraufhin die App in Produktion ging. Durch Testautomatisierung und hochwertige Tests während der Entwicklung konnte gewährleistet werden, dass es keine Fehler in der Anwendung gibt.

Für die Authorisierung verwendeten wir die Microsoft Authentication Library (MSAL). Dies war insbesondere bei der Einführung der Unterstützung von Null Safety schwierig, da hier alle Bibliotheken umgestellt werden mussten, um von ihr unterstützt werden zu können. In den ersten drei Monaten nach der Aktualisierung erfolgte die Umstellung aufgrund von MSAL nicht vollständig. Dies führte dazu, dass die FirebaseAuth-Bibliothek mit MSAL in Konflikt geriet. Das Team von Itransition löste dieses Problem, indem es Bibliotheken einrichtete, festlegte, welche Bibliotheken MSAL verwenden sollte, und Konflikte vorbeugend löste.

Sicherheit

Nur unsere Unternehmensmitarbeiter können sich mit einem MSAL-Konto in die App einloggen, das über eigene Sicherheitsmaßnahmen verfügt. Der Zugriff auf alle Daten erfolgt ausschließlich über Microsoft Graph, ein sicheres Tor zu Daten und Informationen.

Um maximale Sicherheit von Anwendungen und Codes zu gewährleisten, haben wir Obfuskation (für Android), sichere Schlüsselspeicherung und zusätzliche Geräteprüfungen (speziell für iOS und Android) implementiert. Die Obfuskation ermöglicht es uns, den Code zu "verwirren" und zu "ersetzen", um seine Wiederverwendung bei der Dekompilierung zu erschweren. Da iOS über einen Standardschutz verfügt, haben wir diese Sicherheitsmethode für Android verwendet und sie mit Flutter ARB-Dateien (Application Resource Bundle) anstelle von APK-Dateien implementiert.

Für die Schlüsselspeicherung haben wir ein eingebautes sicheres Schlüsselspeichersystem für iOS (Keychain) und für Android (Keystore) über die Implementierungsmethode Flutter_secure_storage verwendet. Der Schlüssel ist nur für die Anwendung, aber nicht für den Benutzer verfügbar.

Weitere Sicherheitsüberprüfungen umfassten die Überprüfung des Geräts auf Root/Jailbreak mit dem trust_fall-Paket. Das Team prüfte, ob das Gerät unter iOS/Android JailBroken (gerootet) ist, ob es sich um ein echtes Gerät oder einen Emulator handelt oder ob es seinen Standort vortäuschen kann. Bei Android haben wir auch geprüft, ob die Anwendung auf einem externen Speicher läuft.

Um Flutter-spezifische Sicherheitsmaßnahmen zum Schutz persönlicher Nutzerdaten vor der Dekompilierung von Anwendungsdateien, MITM-Angriffen und dem Rooten von Geräten bereitzustellen, haben wir die folgenden Empfehlungen in den nativen Teilen der Anwendung eingebaut:

  • Nur sicheren lokalen Speicher je nach Plattform verwenden
  • Kritische Benutzerdaten nicht im Code speichern
  • Keine "selbstgeschriebenen" Algorithmen verwenden
  • Kritische Benutzerdaten nicht offen übertragen
  • Kritische Benutzerdaten nicht lokal speichern

Besonderes Augenmerk legte das Team auch auf das Sicherheitsniveau der verwendeten Bibliotheken und der Datenspeicherung. So überprüften wir die Bibliotheken auf Verschleierungsmöglichkeiten, stellten sicher, dass der Datenverkehr nicht durch sie hindurchgeht, und sorgten für eine sichere Datenspeicherung. Für die Datenspeicherung haben wir Flutter Secure Storage verwendet, das eine API für die sichere Speicherung von Daten bereitstellt, die auf nativer Code-Ebene in Keychain (iOS) und EngryptedSharedPreference (Android) umgewandelt werden.

Ergebnisse

Wir entwickelten eine skalierbare, plattformunabhängige, mobile App und erzielten folgende Ergebnisse:

  • 80% der Itransition-Mitarbeiter haben die App heruntergeladen
  • 95% nutzen die App als zentrale Anlaufstelle für Unternehmensdienstleistungen
  • 20% mehr Mitarbeiter nutzen Rabatte
  • Papierlose Veranstaltungsanmeldung per QR-Code