Oba přístupy mohou vést ke kvalitní a spolehlivé aplikaci. O výsledku rozhoduje také architektura, způsob práce s daty, zabezpečení a kvalita testování. Nativní technologie sama o sobě nezaručí vyšší bezpečnost ani multiplatformní framework automaticky nezpůsobuje nižší výkon.
Nativní vývoj pro iOS a Android
Nativní přístup poskytuje vývojářům přímou kontrolu nad funkcemi operačního systému, uživatelským rozhraním a technickou implementací. Hodí se zejména tam, kde má produkt rozsáhlé požadavky specifické pro jednu platformu nebo potřebuje detailní optimalizaci jejího chování. Při vývoji pro oba systémy je však nutné počítat se samostatnými mobilními aplikacemi a odpovídajícími odbornými znalostmi. Zároveň není nutné vytvářet dvakrát úplně všechno, především serverové služby, databáze nebo některé další části infrastruktury mohou zůstat společné.
Swift a SwiftUI pro iOS
Swift je moderní programovací jazyk společnosti Apple, který se používá pro tvorbu aplikací pro iPhone, iPad a další zařízení jejího ekosystému. Vývojářům poskytuje nástroje pro práci se systémovými funkcemi, daty a aplikační logikou. Pro návrh uživatelského rozhraní se často využívá SwiftUI, deklarativní framework, ve kterém vývojář popisuje podobu a chování jednotlivých prvků. V existujících projektech zůstává důležitý také UIKit. Jejich možnosti a vzájemné využití popisuje oficiální dokumentace Apple. Nativní vývoj pro iOS má význam především tehdy, když aplikace potřebuje rozsáhle pracovat s funkcemi ekosystému Apple nebo vyžaduje specifické uživatelské prostředí. Samotné použití Swiftu však není podmínkou kvalitní aplikace pro iPhone.
Kotlin a Jetpack Compose pro Android
Kotlin patří mezi hlavní jazyky moderního vývoje aplikací pro Android. Umožňuje vytvářet aplikační logiku, pracovat se systémovými službami a využívat nástroje ekosystému Android. Pro tvorbu uživatelského rozhraní Google doporučuje Jetpack Compose. Tento moderní toolkit využívá deklarativní přístup, podporuje opakovaně použitelné komponenty a lze jej postupně zavádět i do existujících aplikací. Jeho principy vysvětluje dokumentace Android Developers.
Při vývoji pro Android je zároveň potřeba zohlednit rozmanitost zařízení, velikostí displejů a podporovaných verzí systému. Výběr technologií proto souvisí také s tím, na jakém hardwaru mají uživatelé aplikaci provozovat. Java a Objective-C zůstávají důležité zejména při správě starších aplikací. Java se nadále používá v existujících Android projektech, zatímco Objective-C může být součástí starších aplikací pro iOS. Při jejich modernizaci není vždy nutné přepisovat celý produkt. Často dává větší smysl postupná úprava jednotlivých částí.

Multiplatformní vývoj pro obě platformy
Multiplatformní přístup umožňuje vytvářet aplikace pro iOS a Android s vysokým podílem společného kódu. Vývojový tým může sdílet aplikační logiku, práci s daty i části uživatelského rozhraní. To usnadňuje zejména projekty, které nabízejí podobné funkce na obou platformách. Mezi rozšířené technologie patří Flutter a React Native. Obě umožňují vytvářet skutečné mobilní aplikace, které lze publikovat v příslušných obchodech. Liší se však způsobem vykreslování rozhraní, programovacími jazyky i návazností na existující vývojové prostředí.
Flutter a Dart
Flutter je framework od Googlu, který využívá programovací jazyk Dart. Poskytuje vlastní systém uživatelských komponent, označovaných jako widgety, a umožňuje navrhovat rozhraní s vysokou mírou vizuální konzistence napříč platformami. Výhodou je kontrola nad vzhledem a chováním jednotlivých obrazovek. Flutter se proto může hodit pro produkty s výraznou vizuální identitou, specifickými interakcemi nebo rozhraním, které má na různých zařízeních působit jednotně. Pokud aplikace potřebuje méně obvyklou funkci operačního systému, lze využít dostupné pluginy nebo doplnit vlastní platformově specifický kód. Jeho rozsah je vhodné ověřit ještě před zahájením realizace.
React Native a TypeScript
React Native umožňuje vytvářet mobilní aplikace s využitím Reactu a JavaScriptu nebo TypeScriptu. Jeho komponenty využívají nativní možnosti cílových platforem a framework poskytuje nástroje pro tvorbu společného aplikačního rozhraní. Tato technologie bývá zajímavá pro firmy, které již mají zkušený tým pracující s Reactem. Část vývojových postupů, knihoven a znalostí může být využitelná také při tvorbě mobilního produktu. To ale neznamená, že lze existující webovou aplikaci automaticky převést na mobilní bez dalších úprav. Rozhodování mezi React Native a Flutterem by proto nemělo vycházet pouze ze vzhledu výsledné aplikace. Důležitá je také zkušenost vývojářů, dostupnost potřebných knihoven, kompatibilita s existujícími systémy a způsob dlouhodobé správy projektu.
Jak vybrat vhodnou technologii pro mobilní aplikaci
Technologický výběr by měl vycházet z konkrétních požadavků, nikoli z popularity frameworku nebo osobních preferencí programátora. Před rozhodnutím je proto vhodné připravit stručnou specifikaci projektu a posoudit následující oblasti.
Rozsah první verze a další rozvoj - Oddělte funkce nezbytné pro spuštění od těch, které chcete přidávat později. Vývojový tým díky tomu pozná, které požadavky musí technologie splnit okamžitě a na které se může připravit do budoucna.
Integrace a technická omezení - Seznamte systémy, zařízení a externí služby, se kterými má aplikace spolupracovat. U neobvyklých funkcí, například specifické Bluetooth komunikace nebo složitých úloh na pozadí, prověřte jejich podporu v konkrétním frameworku.
Uživatelský zážitek a dostupný tým - Zvažte očekávané chování rozhraní na obou platformách a zkušenosti lidí, kteří budou aplikaci vyvíjet. Technologie, kterou tým dobře ovládá a dokáže dlouhodobě udržovat, může být vhodnější než řešení zvolené pouze podle trendů.
Náklady na realizaci a provoz - Vedle první verze posuzujte také testování, aktualizace, závislosti na externích knihovnách a budoucí změny. Podrobnější rozbor najdete v článku o faktorech ovlivňujících cenu vývoje mobilních aplikací.
U technicky nejasných požadavků může pomoci malý funkční prototyp. Ten umožní předem ověřit například komunikaci s konkrétním zařízením, chování aplikace při výpadku připojení nebo odezvu náročnějšího rozhraní. Výsledky testu jsou pro rozhodnutí užitečnější než obecné porovnávání technologií.
Příklady výběru technologie v praxi
Stejné řešení nemusí být vhodné pro dva podobně vypadající projekty. Rozdíl často spočívá v tom, jak aplikaci lidé používají, s čím musí spolupracovat a jaké další změny firma plánuje. Následující modelové situace ukazují, jak lze technologický výběr přizpůsobit skutečným potřebám.
Zákaznická aplikace pro objednávky a věrnostní program
Firma plánuje mobilní aplikaci, ve které zákazníci uvidí nabídku produktů, vytvoří objednávku a získají přístup k věrnostním výhodám. Funkce mají být na iOS a Androidu podobné a velká část dat pochází ze společného firemního systému. V takovém případě stojí za zvážení Flutter nebo React Native. Sdílené uživatelské scénáře mohou usnadnit vývoj i následné změny. Konečný výběr mezi frameworky pak závisí například na existujícím technologickém prostředí firmy a požadovaném designu.
Aplikace pro techniky v terénu
Servisní společnost potřebuje, aby zaměstnanci zaznamenávali zásahy, pořizovali fotografie, pracovali s daty bez stabilního připojení a komunikovali s externím měřicím zařízením. Zde by měl vývojový tým nejprve ověřit konkrétní technické požadavky. Pokud je práce s externím hardwarem nebo systémovými službami velmi rozsáhlá, může být výhodnější nativní implementace. Dobře navržený multiplatformní projekt však může stejné zadání také splnit. Rozhodnout by měly výsledky technického ověření, nikoli samotná přítomnost offline režimu.
Modernizace starší mobilní aplikace
Firma provozuje několik let mobilní aplikaci, která postupně přestává vyhovovat současným požadavkům. Některé knihovny už nejsou podporované, aktualizace operačních systémů komplikují její provoz a přidávání nových funkcí vyžaduje stále více práce. V takové situaci není nutné automaticky měnit programovací jazyk nebo přepisovat celou aplikaci. Vývojový tým by měl nejprve prověřit stav zdrojového kódu, používané technologie a možnosti dalšího rozvoje. Pokud je základ aplikace kvalitní, může být vhodnější modernizovat pouze problematické části. Jestliže však současná architektura zásadně omezuje další vývoj, dává smysl zvážit rozsáhlejší přepracování v rámci vývoje mobilní aplikace na míru. Důležité je naplánovat změny tak, aby firma omezila provozní rizika a zachovala kontinuitu služby pro stávající uživatele.

Testování, publikování a údržba mobilních aplikací
Výběrem technologie práce nekončí. Mobilní aplikace musí správně fungovat na podporovaných zařízeních, respektovat pravidla operačních systémů a zvládnout aktualizace bez zbytečných komplikací. Testování by mělo zahrnovat nejen jednotlivé funkce, ale také chování při přerušení připojení, změnách oprávnění, různých velikostech obrazovek a obnovování aplikace po přechodu do pozadí.
Při veřejném vydání je potřeba připravit samostatné distribuční verze pro iOS a Android a splnit příslušné podmínky obchodů. Apple například posuzuje funkčnost, obsah, ochranu soukromí i další požadavky uvedené v App Review Guidelines. Obdobná pravidla a technické požadavky platí také pro publikování v Google Play.
Po spuštění je vhodné sledovat chybovost, stabilitu a využívání jednotlivých funkcí. Vývojový tým by měl počítat s pravidelnými aktualizacemi, bezpečnostními opravami a změnami operačních systémů. Také proto je důležité už při předání projektu vyjasnit, kdo ponese odpovědnost za další provoz a správu zdrojového kódu.
Vývoj mobilních aplikací s Expert Dev
Kvalitní mobilní aplikace začíná srozumitelným zadáním. Pokud máte definované cílové uživatele, hlavní funkce a potřebné integrace, můžete lépe posoudit vhodné technologie, rozsah realizace i požadavky na další rozvoj. Výsledkem je přehlednější projekt, ve kterém technická rozhodnutí vycházejí z potřeb produktu. V Expert Dev se zaměřujeme na vývoj mobilních aplikací na míru a navazující vývojové služby. Pomůžeme vám projít požadavky, posoudit technologické možnosti a navrhnout další postup od úvodní konzultace až po realizaci aplikace.