Temat: PhoneGap - ktoś w Polsce zrobił aplikację?
Tworzyłem aplikację w Phonegap na iOS i Androida.
To była aplikacja wewnętrzna, dla pracowników firmy, jeden z wielu modułów.
Zamysł był taki, że aplikacje dla ludzi pracujących, które są bardzo rozbudowane, będą pisane natywnie na iOS + Android,
a w Phonegapie była robiona mała aplikacyjka dla kierowników, zawierająca głównie raportowanie z wyników pracy ich przełożonych.
Apka w Phonegapie mimo bardzo wielu problemów, prawdopodobnie ponad dwukrotnie przekroczonym terminie, została wdrożona. Przez jakiś czas była wykorzystywana (może jakieś 2 lata). Ale finalnie jej wsparcie zostało całkowicie porzucone. Od tej pory już podobne próby nie były podejmowane, program funkcjonuje na aplikacjach mobilnych iOS + Android, a część raportująca jest wyłącznie na stronie internetowej. Aplikacja Phonegap miała być niejako zamiennikiem tej strony (dodatkiem?) ale finalnie lepszym rozwiązaniem okazało się zbudowanie nowej strony internetowej, odpowiednio ostylowanej żeby wyglądała dobrze zarówno na dużym monitorze jak i na telefonie. W tym sensie, że np. na monitorze jest widok master-detail, a na telefonie jest to podzielone na 2 kolejne ekrany: na początku widok listy, a klik w element otwiera detail.
Dodam, że ta akcja z Phonegapem miała miejsce w latach 2011-2013.
Od wielu lat słyszę o nowych frameworkach, które pozwalają napisać aplikację na iOS + Android na raz.
Wiele się nie sprawdziło, np.:
- Phonegap
- Sencha Touch
- Xamarin
Obecnie najbardziej "modne" są:
- React Native
- Flutter
Problemy aplikacji pisanej jako WebView:
- Aplikacja działa powoli
- Aplikacja nie jest zbyt reaktywna
- Aplikacja działa różnie na różnych androidach (różnice we wbudowanej w system przeglądarce mogą być ogromne)
- Interfejs użytkownika, zamiast pisać osobno na Android i iOS, pisze się raz, ale poświęca na niego więcej czasu niż w sumie na iOS+Android
- Aktualizacje przeglądarek psują aplikację, np. raz update w silniku Chrome spowodował że przestały działać wszystkie przyciski ;-) Generalnie trzeba wspierać tą aplikację jak webową (być podpiętym pod maile o aktualizacjach przeglądarek)
Problemy frameworków (budujących aplikacje natywne, ale opakowując je w jakieś rozwiązanie):
- Nie można korzystać z natywnych kontrolek, tylko z kontrolek wybranego Frameworka
- Kontrolki Frameworka na ogół mają o wiele mniej możliwości rozszerzenia, niż kontrolki natywne
- Tworzenie własnych kontrolek we Frameworku bywa utrudnione lub niemożliwe
- Gdy wychodzi nowy iOS/Android, twój Framework nie dostosowuje się do niego. Trzeba czekać minimum kilka miesięcy, aż firma produkująca Framework dostosuje go wizualnie, a często to dostosowanie w ogóle nie następuje i aplikacje np. na iOS 13 wyglądają jak z iOS 10/11, więc są już niedzisiejsze i nic nie można na to poradzić.
- W skrajnych przypadkach, po wyjściu nowej wersji systemu, Framework może nie kompilować poprawnie aplikacji, lub np. sklep Apple jej nie puści.
############################
Podsumowanie tematu (poparte wieloletnim doświadczeniem w programowaniu iOS i Android oraz krótkim doświadczeniem z webem):
Jedyna opcja żeby napisać dobrą aplikację mobilną,
to napisać aplikację natywną iOS + Android.
Na Android pisać w Java/Kotlin,
na iOS w ObjC/Swift.
Będzie najlepiej pod każdym względem - szybciej, lepiej, łatwiejsze utrzymanie, gwarantowana możliwość rozwoju.