Status: "To skomplikowane" - czego nie spodziewaliśmy się tworząc dla Was naszą aplikację na iOS?

15/02/2021 | Czas czytania: ~ 4 min. czego nie spodziewaliśmy się tworząc dla Was naszą aplikację na iOS?

Ponad rok temu poinformowaliśmy naszych klientów o tym, że pracujemy nad wypuszczeniem naszej aplikacji dla urządzeń z systemem operacyjnym iOS. Mieliśmy już w pełni funkcjonalną aplikację na systemy Android, więc byliśmy przekonani, że już niebawem ukaże się analogiczna wersja dla użytkowników urządzeń Apple. Wbrew naszym oczekiwaniom aplikacja ukazała się w wersji beta dopiero w tym roku. Dlaczego? W tym wpisie wyjaśniamy trudności, które napotkaliśmy na naszej drodze!


Krok 1: Poproś o pomoc specjalistę

Z początkiem września 2019 roku rozpoczęliśmy współpracę z zewnętrznym partnerem w celu stworzenia multiplatformowego stacku dla systemów Android i iOS. Dzięki zastosowaniu tej technologii duża część kodu źródłowego aplikacji na te dwa najpopularniejsze mobilne systemy operacyjne byłaby wspólna, co ułatwiłoby dalsze utrzymanie i rozwój apki. Wszystko szło stosunkowo gładko aż do marca 2020 roku, kiedy przygotowano proof of concept z wykorzystaniem stworzonej przez Google technologii Flutter. W OneMeter zawsze stawialiśmy na nowoczesne technologie, więc perspektywa wykorzystania frameworku rozwijanego przez “giganta z Mountain View” wydawała się obiecująca. Zaczęliśmy więc tworzyć nowe wersje aplikacji na Androida i iOS, głównie przygotowując grafikę i badając komunikację Bluetooth podczas korzystania z tej technologii. Rozwój został wstrzymany w związku z informacją od zewnętrznego partnera o zakończeniu prac nad nowym stackiem komunikacyjnym z wykorzystaniem Kotlin Multiplatform.

Krok 2: Synergia pracy dwóch zespołów

W kwietniu rozpoczął się rozwój aplikacji na iOS. Zapewniliśmy wsparcie zewnętrznemu partnerowi w zakresie rozwoju iOS i rozpoczęliśmy integrację nowego stacku z naszą obecną aplikacją na Androida. Podczas rozwoju napotkaliśmy kilka problemów, których wcześniej nie byliśmy w stanie przewidzieć, co znacząco spowolniło prace. Utknęliśmy, rozwiązując jedynie drobne przeszkody takie jak logowania Apple ID i Facebooka czy też obchodzenie braków w bibliotece do obsługi multiplatformowego kodu.

Krok 3: Zrób to sam

Nie widząc postępów w naszej współpracy z dotychczasowym partnerem technologicznym, postanowiliśmy we wrześniu 2020 kontynuować prace nad aplikacją samodzielnie. Początkowe założenia, iż do istniejącego kodu musimy dodać jedynie funkcje aktualizacji oprogramowania i kilka drobnych poprawek, okazały się jedynie życzeniem. Zmian było znacznie więcej. Wcześniej nie pracowaliśmy z aplikacjami na iOS i wiele rzeczy stanowiło dla nas wyzwanie. Byliśmy zaskoczeni, że nie możemy łatwo wprowadzać zmian w stacku wieloplatformowym, a niektóre zmiany całkowicie psują aplikację. Debugowanie i badanie problemów zajęło wiele dni. W wyniku przeprowadzonej analizy, dowiedzieliśmy się, dlaczego aplikacja ma problemy w wielu miejscach. Zaczęliśmy zgłaszać problemy w bibliotekach i uzyskiwać wsparcie od ich wydawców ale zrozumienie natury tych problemów zajęło dużo czasu:

1. Większość prac związanych z tworzeniem kodu wieloplatformowego dotyczyła Androida

Wiele problemów i niedociągnięć Kotlin Native było dla nas nieznanych w wyniku zastosowania Kotlin JVM, który jest najbardziej przetestowaną i stabilną wersją języka. Kotlin Native ma zupełnie inny model pamięci i niektóre biblioteki nie działają na nim tak samo.

2. Niedojrzałość bibliotek

Zastosowana przez nas biblioteka Ktor sprawiała wiele problemów. W dalszym ciągu wiele błędów spowodowanych przez nią czeka na naprawę. Nowa wersja rozwiązuje niektóre problemy i umożliwia funkcjonowanie nowej aktualizacji programu i wersji językowej. Część bibliotek jest kompatybilna tylko z Kotlin JVM i jesteśmy zmuszeni szukać alternatyw oraz nauczyć się ich używać. Niektóre funkcje nie są obsługiwane i musimy je wdrożyć samodzielnie.

3. Kotlin 1.4

Wydanie Kotlin 1.4 niesie ze sobą wiele korzyści i wiele problemów. Pozwoliło nam to na lepsze i łatwiejsze zarządzanie bibliotekami używanymi w zasobach wieloplatformowych. Wprowadził typy generyczne atrybuty objc i wprowadził wiele zmian w modelu pamięci Kotlin Native, szczególnie w iOS. Powodowało to awarie aplikacji iOS częściej niż oczekiwaliśmy. Ten błąd występował w poprzedniej wersji języka i przyczyniał się do powstawania zakłóceń niektórych funkcji aplikacji, ale nie powodował awarii całości. Musieliśmy więc poświęcić więcej czasu na jednorazowe rozwiązanie tego problemu, a to przyczyniło się do opóźnienia całości przygotowań nowej wersji aplikacji.

4. Istota rozwiązania

Trudność w implementacji niektórych funkcjonalności wynika również ze sposobu działania naszego ekosystemu. Urządzenie OneMeter komunikuje się z telefonem za pomocą zaimplementowanego przez naszych programistów protokołu technologii Bluetooth. Aplikacja OneMeter to rozwiązanie składające się z wielu elementów. To nie tylko interfejs do obsługi bezprzewodowego urządzenia audio czy prosta przeglądarka danych. Zaimplementowanie komunikacji między urządzeniem zewnętrznym tego typu a smartfonem to dość pracochłonny proces, a mnogość różnych typów liczników poszczególnych producentów dodatkowo wydłuża procedury testów kompatybilności. Wdrażanie nowych elementów aplikacji dodatkowo komplikują ograniczenia dot. komunikacji bezprzewodowej różnych systemów operacyjnych (iOS, Android) zmieniane wraz z aktualizacjami tych systemów (np. w celach poprawy zabezpieczeń czy wydłużenia czasu pracy na baterii).


Obecnie wypuściliśmy już dwie beta wersje naszej aplikacji na iOS i nie zwalniamy tempa, mając nadzieję, że w niedalekiej perspektywie ukaże się kompletna aplikacja w sklepie Apple. Jesteśmy na etapie rugowania poszczególnych błędów i wdrażania funkcjonalności, które zapewnią intuicyjne korzystanie z naszej aplikacji.


Wydarzenia

czego nie spodziewaliśmy się tworząc dla Was naszą aplikację na iOS?

Status: "To skomplikowane" - czego nie spodziewaliśmy się tworząc dla Was naszą aplikację na iOS?

15/02/2021

Ponad rok temu poinformowaliśmy naszych klientów o tym, że pracujemy nad wypuszczeniem naszej aplikacji dla urządzeń z systemem operacyjnym iOS. Mieliśmy już w pełni funkcjonalną aplikację na systemy Android, więc byliśmy przekonani, że już niebawem ukaże się analogiczna wersja dla użytkowników urządzeń Apple.

Investing in green energy solutions - why being eco is worth it?

Investing in green energy solutions - why being eco is worth it?

27/01/2021

Start-up community is getting bigger and is developing fast despite the Covid-19 pandemic. This positive trend is rising and bringing many profits. There’s no doubt that they are the pioneers of what is hot, what is new and what can revolutionize our everyday life.

249 225 16 0 0 0 1 10 349 315 16 99 99 12 1.23 10 299 269 16 0 0 1 10 399 359 16 99 12 1.23 10 0 0