Entwicklung und Fehlerbehebung von benutzerdefinierten Funktionen in mobilen Anwendungen
Vor kurzem bin ich auf diesen Kommentar in der Code-Überprüfung eines erfahrenen Entwicklers gestoßen, der die Arbeit eines Kollegen begutachtete: "Die Benutzerfunktion wurde leicht angepasst, um korrekt zu funktionieren, wenn andere Sprachen als Englisch verwendet werden." Dieser Kommentar war überraschend – der Code ist der Code, und es sollte keinen Unterschied machen, welche Sprache der Entwickler oder der Endbenutzer spricht! Eine Benutzerfunktion ist einfach ein Ausdruck, der Eingabeparameter akzeptieren und ein Ergebnis zurückgeben kann.
Altova MobileTogether unterstützt Benutzerfunktionen innerhalb eines plattformübergreifenden Frameworks für die mobile Entwicklung, das ein intuitives Benutzeroberflächen-Design per Drag-and-Drop mit standardisierter funktionaler Programmierung für die Datenauswahl und -verarbeitung kombiniert. Mehrere MobileTogether-Demoanwendungen sind stark von Benutzerfunktionen abhängig, und der MobileTogether-Designer enthält Funktionen, die bei der Erstellung und Validierung von Benutzerfunktionen erheblich helfen.
Schauen wir uns die Benutzerfunktionen in mobilen Anwendungen genauer an, indem wir eine dieser Beispielanwendungen betrachten.

In einem früheren Beitrag haben wir die App "Parcel Delivery" als Beispiel für fortgeschrittene Programmiertechniken in der mobilen Entwicklung erwähnt. "Parcel Delivery" ist eine elegante Umsetzung eines erfahrenen Entwicklers, die stark auf benutzerdefinierte Funktionen setzt.
Das Beispiel "Paketlieferung" ist eine vollständige Simulation einer realen App zur Paketlieferung. Der Endbenutzer übernimmt die Rolle eines Fahrers für ein Lieferunternehmen, der Pakete von einem Lager in New Jersey zu verschiedenen Zielen in New York City transportiert, wobei er sich von einem GPS-System gesteuert wird. Sie können die App im Simulator-Fenster des MobileTogether Designers ausführen, um realistische Bewegungen zu den jeweiligen Zielen zu sehen. Wenn Sie die App "Paketlieferung" auf Ihrem eigenen Smartphone vom MobileTogether-Demo-Server starten, verwendet Ihr Smartphone seine integrierte GPS-Funktionalität.
Hier sind zwei Screenshots von Seiten zur Fahrerzuweisung, wie sie auf einem iPhone im Dark Mode und auf einem Android-Telefon im Light Mode angezeigt werden:

Benutzerdefinierte Funktionen, die zur Laufzeit ausgeführt werden, erstellen die Liste der Lieferaufträge und die Markierungen auf der Karte. Wir können die Funktionsdefinitionen im Fenster "XPath-Ausdrucksgenerator" des MobileTogether Designers einsehen:

Die Option "Builder", die oben ausgewählt wurde, bietet Hilfsmittel zur Eingabe, Popup-Beschreibungen für kontextabhängige XPath-/XQuery-Elemente und automatische Vervollständigung während der Erstellung von Ausdrücken. Die Option "Evaluator" ermöglicht Ihnen eine Vorschau der Ergebnisse von Ausdrücken, sodass Sie diese bei Bedarf überprüfen oder anpassen können.
Da die App im MobileTogether-Simulator ausgeführt wird, hat der XPath-Evaluator Zugriff auf alle Laufzeitwerte der Seitendaten. Wir können den XPath-Evaluator im Simulator öffnen, um Benutzerfunktionen in mobilen Anwendungen zu testen:

Die Funktion RemainingDestinations() gibt eine Liste mit den Attributen für jedes Ziel zurück, die dann die Textliste im unteren Bereich der "To-Do"-Seite füllt.
Die Benutzerfunktion DestinationMarkerList() ruft die Funktion RemainingDestinations() auf und erstellt eine Liste von Kartenmarkierungen, um jeden Zielort auf der Karte zu lokalisieren:

Der Text und der Titel für jedes Ziel werden angezeigt, sobald der Benutzer auf einen Punkt auf der Karte klickt

Die Funktion DestinationMarkerList() ist eine Eigenschaft des Karten-Steuerelements:

Das Hauptmenü des Projekts enthält eine Option, um eine Liste aller Verwendungen von benutzerdefinierten Funktionen in der Anwendung zu erstellen

Für eine detaillierte Analyse der Auswertung einer Benutzerfunktion können Sie während der Simulation den Debug-Modus aktivieren und die Auswertung der Funktion Schritt für Schritt beobachten:

Während die App ausgeführt wird, simuliert der Benutzer jede Zustellung und erfasst für jedes Paket den Empfänger sowie den Zustand der Verpackung. Eine Übersichtsseite zeigt die Ergebnisse:

Auf dieser Karte sind die Markierungen farblich gekennzeichnet, und der angezeigte Text beschreibt den jeweiligen Lieferstatus. Bei der hervorgehobenen Lieferung war Joan Jones als Ersatzempfängerin angegeben, daher ist die Markierung orange anstatt grün. Die Funktion "ReportMarkerList()" hat die Zusammenfassung des Eintrags aus der Datenstruktur abgerufen und die Markierung entsprechend gefärbt, da die tatsächliche Empfängerin nicht die Adressatin war.
Die einzige Möglichkeit, die wir hatten zu erkennen, dass die Auslieferung nicht vollständig erfolgreich war, ergab sich aus den begleitenden Informationen. Und dort wurde das Rätsel um den Kommentar zur Code-Überprüfung gelöst! Der Text ist auf Englisch, was bedeutet, dass der Code-Prüfer eine Benutzerfunktion so angepasst hat, dass sie in jeder Sprache funktioniert.
MobileTogether bietet Funktionen zur Lokalisierung, mit denen sich Textnachrichten in verschiedenen Sprachen zur Laufzeit einfach verarbeiten lassen.
Die App für die Paketlieferung ist für englische, deutsche, spanische, japanische oder französische Sprachversionen des Betriebssystems verfügbar. Der obere Bereich des Lokalisierungsdialogs, der unten dargestellt ist, zeigt eine Tabelle mit Übersetzungen für fest definierte Elemente wie Seitentitel, Beschriftungen, Schaltflächen usw.

Der untere Bereich definiert eine Übersetzungstabelle für Textzeichenketten, die zur Laufzeit basierend auf Bedingungen festgelegt werden, die während der Ausführung auftreten. MobileTogether enthält eine integrierte Funktion namens mt-load-string('Name'), mit der Zeichenketten anhand ihrer zugewiesenen Namen referenziert werden können, unabhängig von der Sprache des Geräts.
Das folgende Bild zeigt die Definition der Funktion ReportMarkerList(), die die Farben der Markierungen und die angezeigten Texte für die Markierungen auf der Karte des Lieferberichts festlegt. Wenn der angezeigte Text für eine Lieferung mit der Zeichenkette "delivered_C" übereinstimmt, wird die Markierung grün. Der englische Text für "delivered_C" lautet: "Persönlich akzeptierte Lieferung". Auf Spanisch wäre dieser Text: "Entrega aceptada en persona."

Wenn der Entwickler einfach den Inhalt von "DeliverySummary" mit der englischen Zeichenkette "Personally accepted delivery" verglichen hätte, würden die Markierungen auf der Karte in keiner anderen Sprache korrekt angezeigt.
Wir können das Verhalten der Benutzerfunktion ReportMarkerText() in verschiedenen Sprachen im MobileTogether-Simulator überprüfen. Im Hauptmenü des Projekts gibt es eine Option, um die App in anderen Sprachen auszuführen:

Wir können die App auf Spanisch verwenden und eine Reihe von Lieferungen durchgehen, um einen Lieferbericht auf Spanisch zu erstellen. Die Farbe jedes Markers wird korrekt basierend auf dem Beschreibungstext für jeden Eintrag in der Lieferübersicht festgelegt.

Nutzen Sie all Ihre Fähigkeiten und Werkzeuge, einschließlich fortschrittlicher Programmiertechniken wie benutzerdefinierte Funktionen in mobilen Anwendungen, um Ihre eigenen Apps in Rekordzeit zu entwickeln! Sehen Sie sich unsere Video-Demonstrationen zu MobileTogether an, entdecken Sie weitere Beispielanwendungen oder konsultieren Sie sogar das Online-Handbuch, um sich einen umfassenden Überblick über alle Informationen zu verschaffen. Wenn Sie bereit sind, loszulegen und Ihre eigenen, plattformübergreifenden mobilen Anwendungen zu entwickeln, laden Sie den MobileTogether Designer herunter.