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.

Kontext

Itransition ist ein geografisch verteiltes Unternehmen mit mehr als 3.000 Mitarbeitern in mehr als 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 anzubieten. Die mehr als 200 Rabatte wurden in den sozialen Medien der Unternehmen und in unserem Wiki aufgelistet, aber es war für die Nutzer schwierig, ihre Relevanz zu verfolgen. 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 Transition-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, eine einzige App zu entwickeln, die alle Funktionen der Apps 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 Transition 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 Zugang zu gewähren. Die Benutzer des Admin-Panels sind Admins mit Zugriffsrechten auf Module und 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; für die Zukunft ist geplant, die Module für Mitarbeiterprofile, Sozialleistungen, Urlaub, Gehalt und Merch hinzuzufügen. Die bestehenden und geplanten Module enthalten Daten aus den Websystemen des Unternehmens, wie z. B. dem Mitarbeiterportal, dem Wiki für Sozialleistungen und der Social-Media-Seite für Rabatte.

Mit dem Veranstaltungsmodul können die Nutzer Firmenveranstaltungen verfolgen, 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 so weiter.

Home screen
Calendar screen
My tickets screen
Map screen

Das Rabattmodul enthält Informationen über die Partnerschaften und Rabatte in den folgenden Kategorien: Auto, Kinder, Lebensmittellieferungen, Gesundheit, Essen gehen, Einkaufen, Bildung, Unterhaltung, Schönheit, Sport, Baumaterial 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 notwendigsten 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 komplexe Metriken, um die Beliebtheit und Relevanz der App zu verfolgen, Prozesse zu beschleunigen und Ressourcen und Kosten bei der Organisation von Veranstaltungen und Rabatten zu sparen. Wir nutzen die Metriken auch, um die App zu perfektionieren 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

Sitzungstiefe
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, Betriebssystem 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 zu korrigieren, 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 z. B. 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 Benutzer, 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 Werkzeuge

Das Team von Intransition 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 z. B. AR/VR. Außerdem haben wir die folgenden Vorteile von Flutter entdeckt:

  • 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.
  • Die Möglichkeit, Dart sowohl für die Frontend- als auch für die Backend-Entwicklung zu verwenden, ermöglicht es uns, das gesamte Projekt (den Frontend-/Backend-Client und den Admin-Client) mit nur einem Team abzudecken.
  • Schnell wachsende Technologie mit ständig neuen Verbesserungen und Bibliotheken, die es uns ermöglichen, der App neue Funktionen hinzuzufügen und neue Ideen schnell zu realisieren.
  • Natives Erscheinungsbild auch auf älteren Android- und iOS-Versionen, so dass wir allen unseren Nutzern das gleiche nahtlose Erlebnis bieten können.
  • 118.000 Dokumentationen auf pub.dev, mit ständigen Updates der Wissensdatenbank, die uns helfen, unsere Fähigkeiten zu erweitern.
  • 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, so dass wir all diese Aktionen durchführen können, ohne einen separaten Manager schreiben zu müssen, was uns Zeit und 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 planen, weitere Module hinzuzufügen, 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 waren und wir die Genehmigung 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. Das Fehlen größerer Fehler wurde durch Testautomatisierung und hochwertige Tests während der Entwicklung gewährleistet.

Für die Autorisierung verwendeten wir die Microsoft Authentication Library (MSAL), die sich als eine Herausforderung erwies, insbesondere bei der Einführung der Unterstützung von Null Safety, bei der alle Bibliotheken umgestellt werden mussten, um von ihr unterstützt zu werden. In den ersten drei Monaten nach der Aktualisierung erfolgte die Umstellung nicht vollständig, da MSAL nicht vollständig umgestellt wurde. Dies führte dazu, dass die FirebaseAuth-Bibliothek mit MSAL in Konflikt geriet. Das Team von Itransition löste diese Herausforderung, 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 Code 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 befolgt:

  • 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 in ihnen. 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 wird.

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