Skip to content
Transpira

Offline i synchronizacja

Aplikacja mobilna jest zbudowana pod pracę w terenie, gdzie sieć bywa niestabilna albo jej nie ma wcale. Każdy formularz najpierw zapisuje się na urządzeniu, a dopiero potem trafia na serwer — dzięki temu ekrany zachowują się tak samo, niezależnie od tego, czy akurat jest zasięg.

Dla kogo

Dotyczy każdego użytkownika aplikacji — kierowcy i technika — bo mechanizm offline jest wspólny dla wszystkich formularzy: inspekcji, zmiany statusu służby, tankowania, wiadomości, dostawy i akcji na zleceniu serwisowym.

Kluczowe pojęcia

  • Kolejka akcji (outbox) — lokalny, uporządkowany zapis każdej wykonanej offline zmiany, czekający na dostarczenie do serwera.
  • Klucz idempotencji — unikalny identyfikator nadawany akcji w chwili jej zapisu; dzięki niemu ponowiona wysyłka po utracie połączenia w trakcie synchronizacji nie tworzy duplikatu.
  • Cache odczytu — lokalna kopia danych referencyjnych (pojazdy, szablony, trasa, zlecenia), która pozwala otworzyć ekran bez sieci.
  • Akcja niesynchronizowalna (dead letter) — akcja, którą serwer odrzucił po wyczerpaniu prób ponowienia; wymaga przeglądu, bo automat już jej nie ponawia.

Lokalna baza i cache odczytu

Dane, które ekran musi pokazać, są czytane najpierw z sieci; udana odpowiedź od razu odświeża lokalną kopię, a nieudana (brak sieci albo błąd) każe aplikacji sięgnąć po ostatnią zapisaną wersję i pokazać ją zamiast pustego ekranu. Wyjątek stanowi sytuacja, w której serwer wprost odpowie, że dostęp został cofnięty (np. usunięto Cię z organizacji) — wtedy aplikacja nie pokazuje nieaktualnych danych „na zapas”, tylko usuwa lokalną kopię i każe zalogować się ponownie. Ten sam mechanizm obsługuje listę pojazdów, szablony inspekcji, trasę dnia, zlecenia serwisowe i zegary czasu pracy.

Kolejka akcji i automatyczna synchronizacja

Każdy zapis — złożenie inspekcji, zmiana statusu służby, dostawa, wiadomość czy akcja na zleceniu — trafia najpierw do kolejki lokalnej, oznaczonej organizacją, w której powstał. Aplikacja opróżnia kolejkę automatycznie: od razu po zapisaniu akcji, przy każdym uruchomieniu i przy każdym odzyskaniu połączenia z siecią. Akcja, która nie dotarła z powodu problemu z siecią (brak trasy, timeout), wraca do kolejki bez zużywania próby i ponawia się przy najbliższej okazji. Akcja, na którą serwer faktycznie odpowiedział odmową — np. próba przejścia zlecenia z pominięciem wymaganego kroku — zużywa próbę, a po wyczerpaniu limitu prób trafia do akcji niesynchronizowalnych zamiast ponawiać się w nieskończoność.

Baner offline i licznik oczekujących

Gdy urządzenie traci połączenie, aplikacja pokazuje baner informujący o trybie offline — formularze pozostają w pełni użyteczne, tylko wysyłka czeka. Pasek górny pokazuje liczbę akcji wciąż oczekujących na synchronizację, więc zawsze wiesz, ile pracy nie dotarło jeszcze na serwer.

Akcje niesynchronizowalne

Akcja, którą serwer odrzucił po wyczerpaniu prób ponowienia, znika z licznika oczekujących i pojawia się na osobnym bannerze „wymaga uwagi” — zarówno na pulpicie, jak i na kolejce zleceń technika. Ekran akcji niesynchronizowalnych pokazuje typ akcji i treść błędu zwróconego przez serwer oraz pozwala zakolejkować ją ponownie jednym dotknięciem, jeśli przyczyna odmowy została już usunięta.

Reset danych lokalnych

Przełączenie aktywnej organizacji odświeża dane każdego ekranu zależnego od organizacji (pojazdy, trasy, zlecenia, zegary czasu pracy), więc po zmianie organizacji nie zobaczysz przypadkiem danych poprzedniej. Wylogowanie idzie dalej i czyści cały lokalny stan urządzenia — kolejkę akcji, cache odczytu i zapisane lokalnie zdjęcia — co ma znaczenie zwłaszcza na współdzielonym urządzeniu, gdzie kolejny kierowca loguje się na tym samym telefonie.

Powiązane