Połączenie wielu aplikacji mobilnych
Klient jako grupa świadczy różne usługi na rynku finansowym. Początkowo dla każdej usługi wydawał i utrzymywał osobne, natywne aplikacje mobilne na iOS i Android. By jednak ułatwić cross-selling produktów oraz usprawnić korzystanie ze swoich produktów klientom różnych do tej pory aplikacji, zdecydował się na połączenie funkcjonalności tych wszystkich aplikacji w jedną aplikację mobilną na iOS i Android.
Projekt w pigułce
Branża
Finansowa
Technologie
Android: Android SDK (API level 33), Kotlin, Hilt, Coroutines, Android Jetpack libraries, Google Filament, Lottie, Firebase (Crashlytics, Firestore, Remote Config, FCM), jUnit, Espresso
iOS: iOS 16 SDK, Swift, SwiftUI, Combine, SceneKit, CoreData, Lottie, Firebase (Crashlytics, Firestore, Remote Config, FCM, Internal App Distribution), SwiftGen, XCTest
Czas trwania
9 miesięcy
Team
2 Team Leads
5 Android developers
5 iOS developers
1 QA specialist
1 UI designer
1 UX designer
1 Project Manager
1 Business Analyst
Forma współpracy
Agile, Time & Material
Zakres
Product workshops & analysis
UI/UX design
Technical stack assessment
Native mobile apps
QA
SLA & maintenance
Innowacje i wyzwania
W ramach innowacji podczas prac nad aplikacją wdrożyliśmy pełne testy automatyczne UI (Android Espresso + iOS XCTest). Wykorzystane zostały też wyłącznie najnowsze biblioteki, architektura i komponenty iOS (SwiftUI, Combine) oraz Android (Kotlin, Hilt, Jetpack). Dzięki skorzystaniu z Google Filament w Android oraz SceneKit w iOS zaimplementowaliśmy fragmenty UI w 3D, a nawet zintegrowaliśmy aplikacje z Lottie, by móc wykorzystywać animacje wektorowe.
Największym wyzwaniem podczas tworzenia nowej aplikacji było połączenie 3 aplikacji napisanych w różnych architekturach z kodem legacy (Java, UIKit). Wymagało to stworzenia zupełnie nowej architektury i przepisanie na nowe technologie (100% Kotlin w Android oraz 100% Swift + SwiftUI). Wymagało to też stworzenia brakujących kontrolek niedostępnych w SwiftUI. Dodatkowym wyzwaniem było zapewnienie najwyższych standardów bezpieczeństwa w mocno pofragmentowanym świecie Androida poprzez m.in. wykorzystanie dedykowanych i powszechnie uznanych bibliotek, takich jak np. Bouncy Castle. Wymaganie klienta, by zapewnić spójne działanie aplikacji na wielu różnych wersjach systemu iOS, nie ułatwiło prac.