Tworzenie i debugowanie funkcji użytkownika w aplikacjach mobilnych

Ostatnio natknąłem się na ten komentarz podczas przeglądu kodu, który dokonał starszy programista, analizując pracę kolegi: "Nieznacznie zmodyfikowałem funkcję użytkownika, aby działała poprawnie, gdy używane są języki inne niż angielski." To zaskakujący komentarz – kod to kod, i nie powinno mieć znaczenia, w jakim języku mówi programista lub użytkownik końcowy! Funkcja użytkownika to po prostu wyrażenie, które może przyjmować parametry wejściowe i zwracać wynik.

Altova MobileTogether obsługuje funkcje użytkownika w ramach platformy do tworzenia aplikacji mobilnych, działającej na różnych systemach operacyjnych, która łączy intuicyjny projekt interfejsu użytkownika (przeciągnij i upuść) ze standardowym programowaniem funkcyjnym do wyboru i przetwarzania danych. Wiele aplikacji demonstracyjnych MobileTogether w dużym stopniu opiera się na funkcjach użytkownika, a narzędzie MobileTogether Designer zawiera funkcje, które znacznie ułatwiają tworzenie i weryfikację tych funkcji.

Przyjrzyjmy się funkcjom dostępnym dla użytkowników w aplikacjach mobilnych, analizując jedną z tych demonstracyjnych aplikacji.

W jednym z wcześniejszych wpisów wspomnieliśmy o aplikacji Parcel Delivery jako przykładu zaawansowanych technik programowania w rozwoju aplikacji mobilnych. Parcel Delivery to elegancka implementacja stworzona przez doświadczonego programistę, która w dużym stopniu opiera się na funkcjach wykorzystywanych przez użytkowników.

Przykład "Dostawa Paczek" to kompletna symulacja aplikacji do dostarczania paczek, działającej w realnych warunkach. Użytkownik wciela się w rolę kierowcy firmy kurierskiej, którego zadaniem jest dostarczanie paczek z magazynu w stanie New Jersey do różnych lokalizacji w Nowym Jorku, korzystając z nawigacji GPS. Można uruchomić aplikację w oknie symulatora w programie MobileTogether Designer, aby zobaczyć realistyczny ruch w kierunku każdego celu. Jeśli uruchomisz aplikację "Dostawa Paczek" na swoim telefonie z serwera demonstracyjnego MobileTogether, Twój telefon wykorzysta wbudowaną funkcję GPS.

Poniżej znajdują się dwa ekrany przypisywania kierowców, wyświetlane na telefonie iPhone w trybie ciemnym oraz na telefonie Android w trybie jasnym:

Funkcje użytkownika, które są wykonywane w czasie działania programu, generują listę zadań dostawczych oraz oznaczenia na mapie. Definicje tych funkcji można zobaczyć w oknie "Konstruktor wyrażeń XPath" w programie MobileTogether Designer:

Opcja "Builder" (Konstruktor), wybrana powyżej, udostępnia narzędzia wspomagające wprowadzanie, wyświetla okienkowe opisy elementów XPath/XQuery zależnych od kontekstu oraz oferuje automatyczne uzupełnianie wyrażeń podczas ich tworzenia. Opcja "Evaluator" (Ewaluator) umożliwia podgląd wyników wyrażeń, dzięki czemu można je zweryfikować lub zmodyfikować w razie potrzeby.

Podczas działania aplikacji w symulatorze MobileTogether, moduł XPath Evaluator ma dostęp do wszystkich wartości danych źródłowych strony w czasie działania. Możemy otworzyć moduł XPath Evaluator w symulatorze, aby przetestować funkcje użytkownika w aplikacjach mobilnych:

Funkcja RemainingDestinations() zwraca listę zawierającą atrybuty dla każdego miejsca docelowego, która jest wykorzystywana do wypełnienia listy tekstowej znajdującej się w dolnej części strony "Do zrobienia".

Funkcja użytkownika DestinationMarkerList() wywołuje funkcję RemainingDestinations() i tworzy listę znaczników mapowych, które pozwalają zlokalizować każdy punkt docelowy na mapie

Tekst i tytuł dotyczące każdego miejsca pojawiają się, gdy użytkownik klika na ikonę na mapie

Funkcja DestinationMarkerList() jest właściwością kontrolki mapy:

Główne menu projektu zawiera opcję generowania listy wszystkich użyć funkcji zdefiniowanych przez użytkownika w aplikacji

Aby uzyskać szczegółowy wgląd w proces oceny funkcji użytkownika, można włączyć tryb debugowania podczas symulacji i obserwować krok po kroku, jak funkcja jest oceniana:

W trakcie korzystania z aplikacji, użytkownik symuluje każdą dostawę i rejestruje dane odbiorcy oraz stan opakowania dla każdego przesyłki. Strona podsumowania dostaw prezentuje wyniki:

Na tej mapie oznaczenia są kolorystycznie rozróżnione, a tekst wyświetlany po kliknięciu na oznaczenie opisuje status każdej dostawy. W przypadku dostawy wyróżnionej powyżej, Joan Jones była osobą zastępującą odbiorcę, dlatego oznaczenie jest pomarańczowe, a nie zielone. Funkcja użytkownika ReportMarkerList() pobierała podsumowanie danych z drzewa danych i zmieniała kolor oznaczenia, ponieważ rzeczywisty odbiorca nie był adresatem.

Jedynym sposobem, w jaki wiemy, że dostarczenie nie przebiegło w pełni pomyślnie, jest analiza tekstu. I właśnie tam rozwiązuje się tajemnica komentarza do przeglądu kodu! Tekst jest w języku angielskim, więc osoba przeprowadzająca przegląd kodu zmodyfikowała funkcję użytkownika, aby działała w dowolnym języku.

MobileTogether oferuje funkcjonalność lokalizacji, która umożliwia łatwe przetwarzanie tekstów wiadomości w różnych językach w czasie działania programu.

Aplikacja do dostarczania przesyłek jest dostępna w wersjach językowych: angielskim, niemieckim, hiszpańskim, japońskim lub francuskim. Górna część okna dialogowego "Lokalizacja", widocznego poniżej, przedstawia tabelę tłumaczeń dla stałych elementów, takich jak tytuły stron, etykiety, przyciski itp.

Dolna sekcja definiuje tabelę tłumaczeń dla ciągów tekstowych, która jest konfigurowana w czasie działania programu, w oparciu o warunki występujące podczas jego działania. MobileTogether zawiera wbudowaną funkcję mt-load-string('nazwa'), która odwołuje się do ciągów tekstowych za pomocą ich przypisanych nazw, niezależnie od języka używanego przez urządzenie.

Poniższy obrazek przedstawia definicję funkcji ReportMarkerList(), która ustawia kolory znaczników i tekst wyświetlany po najechaniu na znacznik na mapie raportu dostaw. Jeśli tekst opisujący akcję dla danej dostawy odpowiada ciągowi znaków o nazwie "delivered_C", wówczas znacznik będzie zielony. Tekst "delivered_C" w języku angielskim to "Osobiście odebrana dostawa". W języku hiszpańskim ten tekst brzmiałby: "Entrega aceptada en persona" (Dostawa odebrana osobiście)

Gdyby programista po prostu porównał zawartość pola "DeliverySummary" z angielskim tekstem "Personally accepted delivery", oznaczenia na mapie nie byłyby poprawnie kolorowane w żadnym innym języku.

Możemy przetestować działanie funkcji użytkownika ReportMarkerText() w różnych językach w symulatorze MobileTogether. W głównym menu projektu znajduje się opcja uruchomienia aplikacji w innych językach:

Możemy uruchomić aplikację w języku hiszpańskim i przejść przez serię dostaw, aby wygenerować raport dostaw w języku hiszpańskim. Kolor każdego znacznika jest poprawnie ustawiony w oparciu o opis działania dla każdego wpisu w podsumowaniu dostaw.

Wykorzystaj wszystkie swoje umiejętności i narzędzia, w tym zaawansowane techniki programowania, takie jak funkcje użytkownika w aplikacjach mobilnych, aby tworzyć własne aplikacje w rekordowym czasie! Sprawdź nasze MobileTogether Prezentacje wideo, więcej Przykładowe aplikacje, lub nawet instrukcja online aby uzyskać szczegółowe informacje na ten temat. Kiedy będziecie gotowi, aby rozpocząć tworzenie własnych aplikacji mobilnych działających na różnych platformach, Pobierz program MobileTogether Designer.