Obsługa błędów w aplikacjach mobilnych korzystających z usług sieciowych

Smartfony dają nam dostęp do ogromnej ilości informacji, ale funkcjonalność nawet najlepiej zaprojektowanych aplikacji mobilnych może być ograniczona przez błędy usług internetowych, które występują podczas komunikacji z zewnętrznymi serwerami. Przerywany zasięg sieci komórkowej w odległych lokalizacjach może również pogorszyć wydajność aplikacji podczas wyszukiwania danych.

MobileTogether, czyli Narzędzie do tworzenia aplikacji mobilnych, działające na różnych platformach, wykorzystujące podejście o niskim poziomie kodowania od firmy Altova, które umożliwiają programistom eleganckie radzenie sobie z błędami usług internetowych w aplikacjach mobilnych, aby uniknąć obciążania użytkowników nieoczekiwanymi przerwami w działaniu aplikacji lub niezrozumiałymi komunikatami o błędach.

W poprzednim wpisie wyjaśniliśmy, jak obsługiwać błędy HTTP w procesie mapowania danych w MapForce. Teraz przyjrzymy się temu samemu serwisowi internetowemu w aplikacji mobilnej i opisujemy sposób obsługi błędów w MobileTogether.

Przykład MapForce, zatytułowany "AirportStatus", pobiera jako dane wejściowe trzyliterowy kod lotniska i korzysta z usługi internetowej udostępnianej przez FAA, która zwraca plik JSON zawierający informacje o stanie lotniska oraz opis ewentualnych opóźnień. Aplikacja mobilna może oferować użytkownikowi listę rozwijaną do wyboru lotniska, a następnie wywołać tę samą usługę internetową i wyświetlić wynik, jak widać tutaj na telefonie z systemem Android:

Przyciski znajdujące się na dole aplikacji "Status lotniska" zapewniają szybki dostęp do dwóch stron internetowych Federalnej Administracji Lotnictwa (FAA), które zawierają dodatkowe informacje, jednak nie są zoptymalizowane pod kątem urządzeń mobilnych.

Opracowaliśmy tę aplikację mobilną przy użyciu narzędzia MobileTogether Designer, w którym usługa internetowa jest dodawana jako źródło danych strony, wykorzystując zapytanie API w formacie REST. Okno dialogowe "MobileTogether API Request" jest bardzo podobne do okna w MapForce, zawierając definicje parametrów, w tym kod lotniska, oraz nagłówek dla odpowiedzi w formacie JSON:

Przepływ pracy aplikacji jest bardzo prosty: użytkownik wybiera lotnisko z listy rozwijanej, wykonywane jest żądanie GET przez interfejs REST, a wyświetlany interfejs jest aktualizowany. Te operacje są realizowane przez grupę akcji, która zawiera mechanizm obsługi błędów usług internetowych w aplikacjach mobilnych:

Jeśli podczas działania tej aplikacji wystąpi błąd HTTP, wyświetlimy prosty komunikat. Programiści mogą wybrać jedną z trzech opcji obsługi błędów, w zależności od wymagań konkretnej aplikacji:

Przerwanie skryptu: Po wystąpieniu błędu, wszystkie kolejne działania w obrębie grupy akcji zostają przerwane. Jest to domyślne działanie w przypadku wystąpienia błędu. Aby kontynuować pomimo błędu, wybierz opcję "Kontynuuj" lub "Wywołaj wyjątek".

Kontynuacja: Akcje nie są przerywane. Zamiast tego, programista może zdefiniować dwie ścieżki i wybrać, która z nich zostanie wykonana w przypadku braku błędu (w przypadku powodzenia), lub w przypadku wystąpienia błędu (w przypadku błędu).

Wywołaj wyjątek: Jeśli zostanie wykryty błąd, ta opcja generuje wyjątek, który jest przechowywany w zmiennej akcji Try/Catch. Część "Catch" akcji Try/Catch służy do określenia, jakie działanie należy wykonać w przypadku wystąpienia błędu. Jeśli nie wystąpi żaden błąd, wykonywane jest kolejne działanie. Szczegółowy opis akcji Try/Catch znajduje się w dokumentacji online programu MobileTogether Designer. Opis akcji Try/Catch znajduje się również w poprzednim wpisie na blogu.

Kontrola wyświetlania informacji w aplikacji

Wyświetlanie interfejsu aplikacji jest zdefiniowane jako seria tabel, jak można zobaczyć na przykładzie poniższego fragmentu okna "Projektowanie strony MobileTogether":

W górnej części obrazu znajduje się rozwijana lista wyboru lotniska, a poniżej znajduje się opis akcji, które zostaną wykonane po dokonaniu wyboru. Jest to element wyzwalający grupę akcji.

Właściwości widoczności dla każdego elementu pozwalają dostosować sposób wyświetlania danych w zależności od informacji zwróconych przez zapytanie.

Testowanie obsługi błędów w usługach internetowych w aplikacjach mobilnych

W naszym poprzednim wpisie na temat obsługi błędów w MapForce pokazaliśmy, jak skonfigurować alternatywne mapowanie danych testowych, które pozwalało nam wyraźnie generować różne błędy i analizować wyniki. Okazuje się, że możemy wymusić wystąpienie błędu w usłudze internetowej FAA, przesyłając pusty ciąg znaków zamiast prawidłowego kodu lotniska. Ostatnia pozycja w liście opcji rozwijanej wysyła pusty ciąg znaków i powoduje wystąpienie błędu, jak widać tutaj na wersji aplikacji na iPhone'a w trybie poziomym:

Następnie użytkownik może kliknąć przycisk "OK", aby zamknąć komunikat, a potem sprawdzić status innego lotniska

Jeśli dopiero zaczynacie przygodę z MobileTogether, zapoznajcie się z tymi przykładowymi rozwiązaniami i filmami demonstracyjnymi, aby lepiej zrozumieć platformę. Możecie również od razu zacząć tworzyć własne mechanizmy obsługi błędów w aplikacjach mobilnych, pobierając darmowy program MobileTogether Designer.