Flughafen: Eine App zur Gepäcksortung

Erstellt: 21.10.2016

Für einen internationalen Flughafen hat hippopunk im Rahmen einer Machbarkeitsstudie eine Gepäck Ortungs-App erstellt. Dieser Blog wird das Einsatzgebiet beleuchten und erklären, weshalb für diese Art von “Rapid Enterprise App Development” die Verwendung von Apache Cordova absolut sinnvoll ist.

Das Einsatzgebiet

Hauptzweck der App ist, dem Benutzer Informationen bezüglich des aktuellen Standortes seines Gepäcks zu liefern.

Nach dem Check-In werden die Gepäckstücke auf ihrem Weg zum Flugzeug von der Sortiermaschine an diversen Positionen gescannt. Mit jedem Scan erhält ein Gepäckstück ein neues Status-Update. Der Benutzer kann sich diese Updates via Push-Nachrichten anzeigen lassen (es besteht die Möglichkeit der Konfiguration bezüglich der Auswahl der Statusberichte, die ein Benutzer erhält).

Die Software-Lösung besteht aus einer App und aus einer Serveranwendung (Backend). Das Backend ist verantwortlich für das Verfolgen der Statusänderungen der Gepäckstücke und das Senden der Push-Nachrichten. Es beinhaltet auch ein API (Application Programming Interface), welches der App den Zugriff auf die Daten erlaubt.

Die Vorgehensweise: Die App bietet dem Benutzer die Möglichkeit, seine Gepäckstück-Quittungen zu scannen und so die Position seines Gepäcks zu verfolgen:

Bild zeigt Kamera des Telefons, mit welchem eine Gepäck-Quittung gescannt wird

Zuerst liest der Benutzer seine Quittung mit Hilfe der Kamera seines mobilen Gerätes ein.

Bild zeigt die Detailinformationen einer gescannten Gepäck-Quittung

Nach dem Einlesen wird der Status des Gepäckstücks angezeigt. Jetzt kann der Benutzer entscheiden, ob er Status-Updates über Push-Nachrichten erhalten möchte. Alternativ kann ein Gepäckstück auch per manueller Eingabe der Badge-Nummer geortet werden (ohne scannen).

Bild zeigt die Liste der gescannten Gepäck-Quittungen

Alle eingescannten Gepäckstücke werden in einer Liste abgespeichert, welche mit einer Wischbewegung aufgefrischt wird (swipe to refresh).

Die technische Lösung

Apache Cordova für das Entwickeln von raschen Unternehmenslösungen

Da es sich bei dieser App um eine Machbarkeitsstudie handelt, und die Verwendung vorerst nur für interne Zwecke vorgesehen ist, wollten wir ein Werkzeug benutzen, mit welchem eine App in kurzer Zeit entwickelt werden kann. Aus diesem Grund haben wir uns für Apache Cordova entschieden. Die Benutzerschnittstelle wurde mit Framework 7 entwickelt. Für das Scannen der Gepäck-Quittungen und zum Empfangen der Push-Nachrichten wurde nativer Code benötigt (Objective-C oder Swift für iOS und Java für Android). Zwei Cordova Plugins standen zur Verfügung; somit war es nicht nötig, auch nur eine Zeile nativen Codes zu schreiben:

  • Barcode Scanner
  • Push Plugin

Da wir bereits aus vergangenen Projekten Erfahrungen mit diesen Plugins gesammelt haben, erfolgte die Integration derselben reibungslos.

Firebase Cloud Services, PHP und das Slim Micro-Framework zur Erstellung der Serveranwendung

Das Erstellen der Serveranwendung sowie das Senden der Push-Nachrichten war etwas knifflig, da mehrere Komponenten zusammenspielen müssen. Der Status der Gepäckstücke muss über einen SOAP Service abgefragt werden. Die Geräte-Identifikations-Codes und die Codes der Gepäck-Quittungen (welche mit der App gescannt wurden) müssen auf dem Server gespeichert werden (die Serveranwendung muss wissen, welchem Gerät (Mobile) eine Push-Nachricht gesendet werden muss). Für jeden Status Update wird eine Nachricht zu Firebase Cloud Messaging gesendet, welche diese dann an als Push-Nachricht an das Gerät schickt. Eine Randnotiz: Firebase Cloud Messaging (FCM) ersetzt Google Cloud Messaging (GCM) zum Senden von Push-Nachrichten. Als Werkzeuge für die Entwicklung der Serveranwendung wurde PHP und das Slim Micro-Framework verwendet. Letzteres ist ein schlankes Framework für die Entwicklung von APIs.

Einige Worte zu Framework 7

Framework 7 ist weit weniger bekannt als Ionic oder OnsenUI. Trotzdem wollten wir dieses in einem produktiven Umfeld testen, denn es bietet einige grossartige Vorzüge:

  • ziemlich pixel-perfekte Komponenten für iOS und Android Material Design
  • sehr schnell (auch beim Laden)
  • einfach zu handhaben
  • de facto keine Abhängigkeiten, da es sich um pures JavaScript handelt (VanillaJS)

Für dieses Projekt war es genau die richtige Wahl.

Für ein grösseres Projekt, welches auch langfristig gewartet werden soll, gibt es ein paar Punkte zu bedenken:

  • VanillaJS führt sehr rasch zu unstrukturiertem Code. Ein Programmiermuster und ein schlankes JavaScript Framework, z.B. VueJS, sollte dem Programmierbaukasten hinzugefügt werden. Eine Randbemerkung: für diese Aufgabe glänzen Ionic 2 und Angular 2, dem Entwickler wird ein gut strukturierter Code zur Verfügung gestellt.
  • Das Geschäftsmodell von Framework 7 ist nicht wirklich klar - es scheint eigentlich gar keines zu geben, auch ist zur Zeit nur ein geringes Sponsoring für dieses Projekt vorhanden. Für langfristige Unternehmensanwendungen könnte die Gefahr bestehen, dass dieses Framework eines Tages nicht mehr unterstützt wird (was wir sehr bedauern würden) - im Übrigen ein generelles Problem von JavaScript Frameworks.

Schlussfolgerung

Hardware und Sensoren bieten zusätzlichen Nutzen für innovative Lösungen

Es hat Spass gemacht dieses Projekt zu entwickeln, da viele Komponenten miteinander zusammenspielen. Benutzer erhalten wirklichen Nutzen durch ihre mobilen Geräte. Obwohl simpel, ist die Kamera die Komponente, welche den Unterschied ausmacht. Innovative Lösungen sollten von den Möglichkeiten der Hardware und den Sensoren Gebrauch machen.

Die richtige Wahl der Entwicklungswerkzeuge für den entsprechenden Geschäftsfall

Von einem technischen Standpunkt aus gesehen hilft die richtige Wahl der Entwicklungswerkzeuge, Software effizient zu entwickeln. Da wir auch native Anwendungen erstellen - Swift/iOS und Java/Android - fühlen wir uns in den verschiedensten Umgebungen wohl. Für diese Art von Projekten, wo Apps innerhalb von Tagen entwickelt werden sollen, ist Apache Cordova das richtige Werkzeug.