
Początek współpracy
Rozpoczęcie projektu InPost Mobile
Release wersji 1
Start prac nad wersją 2
Release wersji 2
Release wersji 2
Dodatkowy motyw aplikacji „dark mode”
Release wersji 3, bezetykietowe nadawanie przesyłek, mapy punktów InPost, dodanie do Huawei AppGallery
Baner z informacją o obsłudze klienta
Przekierowanie paczki do Paczkomat WebView
Rozmowa telefoniczna z kurierem i jakość powietrza
Funkcja szybkich zwrotów ze śledzeniem przesyłki
Obsługa języka ukraińskiego
Voicebot lub pomoc konsultanta
Funkcja ekologicznych zwrotów, mapa automatów Paczkomat
Funkcja udostępniania przesyłek w aplikacji
Co zostało zrobione: Loteria z numerem telefonu jako parametrem, przeniesienie konfiguracji z Firebase do BE, baner marketingowy w hamburger menu
Poprawki do EKOzwrotów oraz dostarczalności powiadomień PUSH, nowe zgody marketingowe, SDK Synerise do wysyłki pushów oraz karuzela banerów
Powiadomienia PUSH dla Parcel Sharing
Zarządzanie karuzelą banerów z Synerise, zapisywanie notificationID, trackowanie deklaratywne Synerise
Aplikacja InPost to prawdziwa rewolucja i innowacja na rynku logistycznym, umożliwiająca całodobowy, szybki, wygodny i bezdotykowy odbiór przesyłek oraz bezetykietowe nadawanie, będąc bezpieczną alternatywą dla usług innych firm.
Potrzeby biznesowe
Jedną z głównych potrzeb biznesowych było przyspieszenie procesu odbioru paczek – szczególnie w okresach świątecznych, kiedy liczba zamówień i zapotrzebowanie na skrytki jest znacznie większe.
Zdalne otwieranie automatu Paczkomat może zmniejszyć kolejki, a także pomija proces weryfikacji (oczywiście z perspektywy użytkownika), który wymaga wpisania lub zeskanowania kodu kreskowego.
Cele biznesowe
Kolejnym ważnym celem była całkowita rezygnacja z SMS-ów z kodami odbioru paczek.
Rozwiązanie to było wysoce nieefektywne kosztowo (InPost wysyłał dziesiątki milionów SMS-ów miesięcznie!), a także ryzykowne pod względem potencjalnych oszustw.
Dwie natywne aplikacje dla Androida i iOS z backendem kodowanym w Java.
Kotlin – dla aplikacji na Androida, z obsługą Google Mobile Services (GMS) i Huawei Mobile Services (HMS)
Dagger – biblioteki zawarte we frameworku Kotlin (dependency injection)
RxJava – dla aplikacji asynchronicznych
Retrofit – dla łatwiejszej komunikacji z API
Firebase – otrzymywanie powiadomień push i zbieranie danych analitycznych
Swift – dla aplikacji na iOS
SwiftLint – najważniejsze biblioteki (częściowa automatyzacja przeglądu kodu)
Realm – łatwe w użyciu bazy danych
Firebase, Lottie – animacje graficzne
Hero – animacje między widokami
Zdalne otwieranie automatu Paczkomat
Pozwalając użytkownikom na sprawniejsze i szybsze odbieranie przesyłek, InPost może dostarczać ich jeszcze więcej!
Funkcjonalność została udostępniona w wersji 2 aplikacji. Proces odbioru paczek musiał być w pełni intuicyjny i podobny zarówno w aplikacji mobilnej InPost, jak i w automatach Paczkomat.
Proces zdalnego otwierania skrytki został zaprojektowany właśnie po to, aby nie zakłócać pracy systemu Klienta.
Funkcjonalność została oceniona wysoko przez użytkowników, przyczyniając się do ich codziennej wygody.
Multiskrytka
Skuteczna optymalizacja procesu odbioru przesyłek.
Rozwiązanie zaowocowało większą liczbą darmowych skrytek dla innych klientów, którzy złożyli zamówienie korzystając z usług InPost. Zwykle, gdy szafki były przepełnione, kurier musiał zaparkować przed automatem Paczkomat, a przekazanie paczek wszystkim klientom zabierało kilka godzin.
Z opcją MultiLocker wzrasta efektywność całego systemu. Kurier może umieścić kilka paczek zamówionych przez jedną osobę w jednej szafce.
Bezetykietowe nadawanie przesyłek
Nadawanie przesyłek za pomocą aplikacji InPost to pierwsza tego typu usługa dostępna na rynku. Funkcja została wprowadzona w wersji 3.0.0 aplikacji i miała na celu maksymalne ułatwienie procesu wysyłania paczek:
Projektowanie aplikacji rozpoczęło się od warsztatów produktowych
Wspólnie z Klientem dokładnie przeanalizowaliśmy projekt, ustaliliśmy najwyższe priorytety oraz kolejność wdrażania poszczególnych funkcjonalności.
Warsztaty zaowocowały przygotowaniem prototypu aplikacji ocenianego wewnętrznie przez zespół InPost.
Następnym krokiem było stworzenie MVP – Minimal Viable Product
Produkt zawierał podstawowe, najistotniejsze funkcje, które należało opracować w przyszłości.
Po stworzeniu drugiego prototypu (opartego na MVP) zaprojektowaliśmy UX do śledzenia przesyłek oraz innych komponentów pobocznych aplikacji.
Wybraliśmy tylko te, które w pełni reprezentowały wartość biznesową naszego Klienta. Chociaż w tym momencie struktura aplikacji pozostała niezmieniona, przeprojektowaliśmy ją zgodnie z księgą znaku firmy, uwzględniając spójność kolorów i zastosowanie nowych czcionek.
Przejście między wersjami 1 i 2 aplikacji InPost obejmowało aktualizacje w store’ach.
Pobranie nowej wersji aplikacji ze sklepu wiąże się z odczytaniem kodu HTML. Jeśli sklep z aplikacjami wprowadza nawet małe zmiany, funkcje aplikacji mogą przestać działać, a poziom bezpieczeństwa może spaść.
Aby uniknąć ryzyka, zdecydowaliśmy się skorzystać z API wymagającego implementacji niektórych
korekt po stronie zaplecza. Wersja 3 aplikacji została wypuszczona w 2020 roku i wprowadziła InPost Mobile do Huawei App Galery.
Problemy z API wymagały znalezienia lepszego rozwiązania. Zaproponowaliśmy je rozwijając wersję 2 aplikacji.
W pierwszej wersji aplikacji API zostało oparte na makietach symulujących docelową funkcjonalność. Po opracowaniu stało się jasne, że wymaga ono przebudowy.
Rozwiązaliśmy to inaczej w wersji 2 aplikacji. API było gotowe przed wykonaniem funkcjonalności lub w trakcie rozwoju. W ten sposób udało nam się uniknąć opóźnień czasowych w projekcie.
Bezpieczny proces weryfikacji.
Musieliśmy zminimalizować ryzyko przekazania przesyłki niewłaściwemu użytkownikowi.
Gdy użytkownik chce odebrać paczkę zdalnie, aplikacja wysyła do systemu zapytanie z numerem przesyłki, kodem odbioru i lokalizacją urządzenia (w określonym zakresie). Jeśli weryfikacja zakończy się powodzeniem, sesja zostanie otwarta, a jeśli nie, sesja zostanie odrzucona.
Czas trwania każdego etapu procesu otwierania skrytki.
Rozwiązanie zaproponowane przez InPost obejmowało wymagający proces programowania. Musieliśmy stawić czoła wszystkim potencjalnym trudnościom, z jakimi się to wiązało.
Najpierw obliczyliśmy czas każdego kroku w milisekundach, zamiast używać ram czasowych. W ten sposób aplikacja otrzymuje czasy, weryfikuje je i konwertuje na czas lokalny, a następnie przekazuje je pomiędzy klasami odpowiedzialnymi za otwarcie skrytek.
Teraz czas spędzony na ekranie jest dodawany do bieżącej godziny. Jeśli żądanie otwarcia skrytki zostanie potwierdzone przez aplikację, kolejne działania podejmuje Paczkomat.
Każda maszyna ma swój komputer podłączony do systemu InPost, który jest w stanie zadbać o poszczególne kroki i poprawnie przesłać dane.
Unikanie przeciążenia systemu klienta.
Zdalne otwieranie automatu Paczkomat polegało na wysyłaniu zapytań do API o stan skrytki. Wiązało się to jednak z pewnym ryzykiem.
Prośby były wysyłane co sekundę, aby system upewnił się, że drzwi skrytki są otwarte. Jednak to rozwiązanie było bardzo problematyczne, zwłaszcza w święta, kiedy zapotrzebowanie na dostawy przesyłek gwałtownie rośnie. Zbyt duża liczba żądań na sekundę może spowodować przeciążenie systemów InPost lub całkowicie je zatrzymać.
Zdecydowaliśmy, że żądanie powinno być blokowane przez InPost do czasu zmiany statusu szafki (możliwe opcje to „otwarta”, „niepowodzenie” lub „przekroczenie limitu”). Cały proces jest bardzo szybki, ale wymaga wydłużenia limitów czasu HTTP. Domyślny czas dla całej aplikacji to 10 sekund. W tym przypadku musieliśmy utworzyć osobną konfigurację API, aby czas oczekiwania na jedno żądanie mógł zająć 30 sekund. Było to najłatwiejsze rozwiązanie, aby uniknąć przeciążenia systemu.
Zamykanie drzwiczek skrytki.
Jeśli paczka zostanie wyjęta z szafki, a drzwi są zamykane, użytkownik może kliknąć przycisk potwierdzający operację – wtedy aplikacja wysyła zapytanie do API InPost z komunikatem, że drzwi są zamknięte. Ale co, jeśli nie są?
Poprawka była dość prosta. Po kliknięciu przycisku „Przesyłka wyjęta” aplikacja wyświetla ekran z komunikatem „Drzwi zamknięte”. Nie wysyła żądania API i przechodzi od razu do podsumowania. W ten sposób użytkownik nie jest zablokowany na jednym ekranie – zwłaszcza gdy drzwi są uszkodzone i nie można ich zamknąć.
W tym momencie, po podsumowaniu procesu, użytkownik ma możliwość wysłania reklamacji, np. gdy przesyłka ma wady.
Paczkomat nie powinien się otwierać z przypadkowej odległości.
Rozwiązanie było szybkie i proste, ale nie pozwalało użytkownikom na otwarcie szafki z domu, gdy ich bliscy przechodzili obok automatu Paczkomat i chcieli odebrać przesyłkę. Potrzebowaliśmy aplikacji do weryfikacji odległości między osobą odbierającą paczkę a szafką.
Chcieliśmy uniknąć sytuacji, w której aplikacja mówi, że klient faktycznie nie znajduje się w pobliżu szafki.
Pierwszym testowanym rozwiązaniem było przeciągnięcie ostatniej znanej lokalizacji telefonu. Ta metoda nie była jednak skuteczna. Po sprawdzeniu logów okazało się, że lokalizację można ustalić na podstawie danych sprzed kilku minut, które system zinterpretował jako zbyt daleko od maszyny. W tym momencie aplikacja nie zgodziłaby się na zdalne otwarcie szafki.
Ta opcja jest zazwyczaj stosowana w aplikacjach, które nie mają żadnych wymagań nawigacyjnych i nie potrzebują bardzo szczegółowych danych. Niestety testy przeprowadzone przez InPost pokazały, że ten tryb nie wystarczy – lokalizował urządzenie w promieniu 100 metrów lub więcej i w tym przypadku użytkownik musiał być bliżej niż 100 metrów.
W kolejnym kroku zdecydowaliśmy się na użycie trybu wysokiej dokładności
lokalizacji, który mógł wymagać specjalnych ustawień w systemie urządzenia, gdyby zmieniła się dokładność lokalizacji. Użycie tych informacji (techniczne uruchomienie Intentu) otworzy okno dialogowe systemu, które pozwoli mu automatycznie zmienić dokładność lokalizacji.
Warto pamiętać, że najwyższa dokładność zależy od sygnału GPS, co oznacza, że najlepiej sprawdza się na zewnątrz. Proces lokalizacji może zająć więcej czasu, gdy sygnał jest rozproszony. W takim przypadku system wyśle informację (wyjątek) do aplikacji, która naprawi problem (zamiar).
Testy manualne
Procedura została przeprowadzona zgodnie z listą najważniejszych funkcjonalności. Testerzy z iteo i InPost przeszli przez każdy punkt przed wypuszczeniem kolejnych wersji aplikacji.
W automatach Paczkomat odbyły się również manualne testy terenowe.
Efektem jest prosta, intuicyjna i nowoczesna aplikacja mobilna na systemy Android i iOS.
Aplikacja InPost zdobyła główną nagrodę na Mobile Trends Awards i została aplikacją roku 2019. W kategorii „Usługa” została również wyróżniona jako nr 1. Firma powtórzyła swój sukces również w 2020 roku, zdobywając główną nagrodę, I miejsce w kategoria „Usługa” oraz II miejsce w głosowaniu użytkowników.
Aplikacja ma obecnie ponad 5 milionów pobrań z dziennym dynamicznym wzrostem ze względu na ogromne zapotrzebowanie na pośrednią dostawę i odbiór towarów. Wszystkie wersje aplikacji przez długi czas utrzymywały się na pierwszych pozycjach w polskich sklepach Google i Apple.