Jestem programistą mobilnym, który spędził dużo czasu rozważając ten problem.
Dlaczego pytasz?
Najprawdopodobniej masz nadzieję obniżyć koszty opracowywania aplikacji poprzez:
- Wykorzystanie istniejących umiejętności programistycznych HTML5 / Javascript
- Kierowanie na wiele platform bez pisania od podstaw wielu aplikacji
- Nie trzeba utrzymywać wielu baz kodów w przyszłości
Przyczyny mogą również obejmować:
- Rozwój HTML5 / JavaScript postrzegany jako „łatwiejszy” niż rozwój platformy natywnej
- Unikanie płatności opłat rejestracyjnych programu deweloperskiego
- Unikanie ograniczeń zawartości sklepu (hazard itp.)
- Unikanie zakupu sprzętu programistycznego (np. Mac dla programistów iPhone)
Definicje
Ustalmy dokładnie, co rozumiemy przez każde z trzech wymienionych podejść:
Natywna
Aplikacja zainstalowana na urządzeniu, zwykle ze sklepu z aplikacjami (chociaż czasami może być ładowana z boku). Do celów tej dyskusji interfejs użytkownika aplikacji natywnej zwykle nie składa się wyłącznie z widoku pełnoekranowego.
Internet mobilny
W rzeczywistości może to być dowolna strona internetowa, jednak w tej dyskusji zastanówmy się nad jednostronicową aplikacją internetową, która próbuje naśladować wygląd aplikacji natywnej. To nie jest natywna aplikacja, działa w przeglądarce urządzenia.
Aplikacja instanceof
natywna Hybrid Hybrid .
Większość ludzi prawdopodobnie rozumie aplikację hybrydową jako jednostronną aplikację mobilną (ponownie najprawdopodobniej imitującą wygląd aplikacji natywnej), ale pakowaną jako natywna aplikacja z dostępem do usług natywnych (à la Phonegap).
Jednak w rzeczywistości istnieje spektrum między modelem Phonegap a całkowicie rodzimym, do którego przyjdę później.
Internet mobilny
Ograniczenia techniczne
Najpierw wypiszmy niektóre ograniczenia techniczne dotyczące mobilnych aplikacji internetowych, które same w sobie mogą stanowić przełom w zależności od tego, co robisz:
- Tylko interfejs HTML / canvas
- Brak dostępu do niektórych zdarzeń i usług urządzenia (są one szeroko udokumentowane)
- Nie może być wymieniony w sklepach z aplikacjami (co wpływa na wykrywalność)
- Może stać się pełnym ekranem i mieć ikonę ekranu głównego w systemie iOS, jednak dla większości użytkowników jest to niezwykłe i nieznane doświadczenie
Jeśli możesz żyć zgodnie z powyższymi zasadami, czytaj dalej, aby dowiedzieć się więcej na temat wyzwań związanych z jednostronnymi aplikacjami internetowymi w stylu natywnym. Jednak ta sekcja nie byłaby kompletna bez odniesienia do aplikacji FT.
Financial Times FT Web App jest znanym przykładem tego stylu aplikacji. Oto interesująca funkcja z brytyjskiej gazety Guardian na ten temat.
To z pewnością niezwykły wyczyn inżynierii. Zauważ, że obecnie jest on nadal dostępny tylko na iOS - to mówi mi, że odkrycie, że rozwiązywanie wyzwań związanych z zaawansowanym tworzeniem przeglądarek jest naprawdę bardzo trudne.
Jednostronicowe aplikacje internetowe w stylu natywnym
Ta sekcja dotyczy zarówno mobilnego internetu, jak i aplikacji w stylu Phonegap.
Natywny wygląd i działanie aplikacji internetowej uzyskuje się zwykle za pomocą frameworka, takiego jak Sencha Touch, który zapewnia zestaw komponentów interfejsu użytkownika do użycia.
Takie ramy są odpowiednie dla bardzo prostych interfejsów użytkownika. Jednak brakuje im elastyczności. Nie będziesz w stanie wdrożyć żadnego natywnego projektu aplikacji za pomocą Sencha, musisz dostosować swój projekt do tego, co może pomieścić framework.
Główny sposób, w jaki cierpią te frameworki, to próba naśladowania zawiłości interfejsu użytkownika platformy. Czy ten przyjemny, niewielki efekt odbicia pojawia się, gdy przewijasz do końca listy na iPhonie? Twój framework musi naśladować to w Javascript. Nie można go całkowicie odtworzyć, będzie miał tendencję do spowalniania, a Twoi użytkownicy utkną w „niesamowitej dolinie” aplikacji, która wygląda trochę jak natywna, ale najwyraźniej nie jest i jest nietechniczna użytkownik nie będzie w stanie dokładnie wskazać przyczyny.
Mit „HTML5 / Javascript jest łatwy”
Fragmentacja urządzeń w przeglądarkach internetowych jest powszechna, a kiedy wyjdziesz poza najbardziej podstawowy HTML i CSS, zauważysz, że rzeczy nie działają tak, jak można się spodziewać. Być może spędzasz więcej czasu na rozwiązywaniu problemów z interfejsem użytkownika, niż zaoszczędziłbyś, robiąc to natywnie dwa razy. Jeśli korzystasz z natywnej wersji, zwróć uwagę, że natywne widoki aplikacji nie są takie same jak przeglądarki urządzeń i mają własne problemy z fragmentacją.
W miarę jak Twoja aplikacja staje się bardziej funkcjonalna, przekonasz się, że potrzebujesz więcej niż podstawowych umiejętności jquery, aby utrzymać JavaScript w czystości i utrzymaniu.
To powiedziawszy, dzięki temu podejściu można bardzo szybko tworzyć proste, funkcjonalne aplikacje. Ale to całkiem oczywiste, gdy robi to aplikacja.
Dalej wzdłuż spektrum
Tak więc chcemy lepszego UX niż aplikacje w stylu Phonegap, bez wielokrotnego pisania absolutnie wszystkiego od zera. Co możemy zrobić?
Udostępnij kod inny niż interfejs użytkownika
Istnieje szereg technik udostępniania logiki biznesowej na wielu platformach macierzystych. Google uruchomił J2ObjC, który tłumaczy Javę na Objective-C. Dzięki starannemu faktorowaniu kodu biblioteka Java może być używana zarówno na Androidzie, jak i iOS.
Biblioteki takie jak Calatrava i Kirin umożliwiają manipulowanie bazami kodowymi napisanymi w Javascripcie (a zatem wszystkim, co można skompilować do Javascript) z kodu natywnego. Uwaga: Pracuję dla Future Platforms, który stworzył Kirin; odnieśliśmy duży sukces, używając go na iOS z JavaScript generowanym z Javy z GWT, a kod Java jest również uruchamiany natywnie na Androidzie.
Korzystaj z widoków internetowych ... w stosownych przypadkach
Widoki na pełnym ekranie mają wiele do zrobienia, aby naśladować przejścia ekranu i efekty odrzuceń. Ale widok internetowy w natywnej aplikacji Chrome może być nie do odróżnienia od natywnej.
Istnieją standardowe i dobrze udokumentowane metody komunikacji z aplikacjami natywnymi i widokami internetowymi.
Listy i tabele mogą działać szczególnie dobrze, gdy są wykonywane w ten sposób, jednak wprowadzanie tekstu jest przykładem czegoś, co najlepiej obsługiwać natywnie (dla pełnej kontroli nad klawiaturą).
W podsumowaniu
Podejście, które jest dla Ciebie odpowiednie, zależy od tego, jak skomplikowana jest Twoja aplikacja i od jakiego poziomu zaawansowania interfejsu użytkownika będziesz zadowolony.
Moje motto: korzystaj z widoków internetowych, gdziekolwiek możesz, ale upewnij się, że użytkownicy nie mogą powiedzieć .