
17. Jul 2023
BusinessNativní vs. cross-platform: Jak si vybrat správný způsob vývoje mobilních aplikací?
Ve světě mobilních aplikací probíhá „věčná“ debata o ideálním způsobu vývoje a tuto otázku často dostáváme i od našich klientů. V tomto článku se dozvíte výhody a nevýhody jednotlivých možností vývoje a také se podíváme na technické a netechnické argumenty z pohledu našich obchodních analytiků, architektů řešení a vývojářů, kteří mají zkušenosti s jazyky Kotlin, Swift, Flutter a React Native.


Jaké jsou možnosti vývoje mobilních aplikací?
Nativní vývoj
Nativní aplikace jsou vyvíjeny pro konkrétní platformu, například iOS nebo Android. Programovací jazyk použitý k vytvoření těchto aplikací je kompatibilní s operačním systémem. Díky používání jazyků specifických pro danou platformu mohou vývojáři lépe využívat nativní funkce platformy. Aplikace vytvořená pro Android tedy nebude fungovat na zařízeních Apple.
- 🤖 Android: Kotlin, Java
Vývojové prostředí: Android Studio - 🍏 iOS: Swift, Objective-C
Vývojové prostředí: Xcode
Cross-platform
Cross-platformový přístup k vývoji mobilních aplikací umožňuje vytvořit jedinou aplikaci, která bude fungovat stejně na více operačních systémech. To znamená, že nemusíte vytvářet samostatné verze pro každou platformu zvlášť.
- Cross-platform: Ionic, React Native, Flutter, Cordova, KMM

Proč preferovat cross-platform vývoj?
Cross-platform frameworky jako Flutter, React Native a KMM prošly významným vývojem:
- Flutter od verze 3.x přináší lepší podporu nativních funkcí, včetně přístupnosti a biometrie.
- React Native využívá nativní komponenty, čímž zlepšuje UX a snižuje rozdíly oproti nativním aplikacím.
- KMM, technologie od společnosti JetBrains, která umožňuje sdílet společný kód (obchodní logika, síťová komunikace, datové vrstvy) mezi systémy Android a iOS, přičemž UI se vyvíjí nativně pro každou platformu s možností používat Android Studio a Xcode.
- HW podpora se zlepšila, ale nativní implementace může být stále potřebná pro velmi specifické případy.
- Podpora těchto frameworků je aktivní a probíhají pravidelné aktualizace.
Proč preferovat nativní vývoj?
Nativnímu vývoji se věnujeme od samého počátku a za tu dobu jsme se setkali s mnoha implementacemi nativních knihoven, prací s rozšířenou realitou, kamerou, videem, bluetoothem, skenerem NFC, zabezpečením, widgety a mnoha dalšími možnostmi, které nabízejí platformy iOS a Android. Naše odborné znalosti v oblasti nativního vývoje se proto týkají nejen programovacích jazyků, ale také integrace hardwaru a softwaru třetích stran.
SwiftUI* a jeho Previews v nativním vývoji výrazně zjednodušuje a urychluje vývoj UI* ve srovnání s UIKit*. Funkce Preview v Xcode umožňuje vývojářům okamžitě vidět výsledek změn uživatelského rozhraní, aniž by museli aplikaci spouštět na simulátoru nebo fyzickém zařízení, což také výrazně zvyšuje produktivitu.
- *UI - uživatelské rozhraní.
- *SwiftUI - deklarativní framework od společnosti Apple, který se v posledních letech stal standardem pro vytváření uživatelských rozhraní.
- *UIKit - starší framework pro vývoj aplikací pro iOS, vývoj v něm vyžaduje více kódu a ruční správu.
Na straně systému Android nativní vývoj výrazně urychluje Jetpack Compose, což je deklarativní framework uživatelského rozhraní podobný SwiftUI. Jetpack Compose umožňuje rychlý vývoj moderních uživatelských rozhraní s podporou živých náhledů přímo v aplikaci Android Studio, což zvyšuje produktivitu a kvalitu uživatelského prostředí.
Téměř všechny známé a oblíbené aplikace, které používá velké množství uživatelů, jsou postaveny na nativních technologiích. Z hlediska obchodního modelu je důležitá „trvalost“ technologií. Cross-platformové technologie, jako je Flutter, se mění velmi dynamicky, zatímco React native nebo některé knihovny třetích stran stagnují, což může při sestavování aplikace vést k nekompatibilitě. Všechny tyto faktory mohou vést k různým problémům, jako je zpoždění vývoje, nedostupnost vývojářů nebo používání zastaralých technologií.
Uvědomujeme si však, že v některých obchodních případech může být vývoj cross-platform správnou cestou. Důležité je rozhodnout se na základě klíčových parametrů vyplývajících z vaší obchodní strategie. Proto jsme pro vás připravili klíčové oblasti designu a vývoje včetně výhod a rizik jednotlivých forem vývoje.
Jaké parametry je třeba zohlednit při výběru přistupu k vývoji mobilní aplikace?
UX & UI – Native stále mírně vpředu, cross-platform výrazně pokročil
Uživatelé hledají aplikace, které vypadají a působí, jako by do jejich zařízení patřily. Nativní aplikace pro iOS a Android jsou vytvořeny pomocí komponent uživatelského rozhraní, na které jsou uživatelé zvyklí z jiných nativních aplikací, což vytváří přirozenou a zároveň výjimečnou uživatelskou zkušenost.
Cross-platform frameworky však za poslední roky velmi pokročily. React Native výrazně snížil rozdíl mezi nativním a cross-platform UI/UX. Používá nativní komponenty, je lépe škálovatelný a podporuje většinu moderních funkcí přístupnosti (zvětšení písma nebo voice-over). Flutter, stejně jako React Native, podporuje přístupnost, i když některé funkce mohou vyžadovat dodatečnou konfiguraci. Podpora zvětšení písma, vysokého kontrastu nebo hlasového ovládání je již standardem.

Příklad rozdílu v UI aplikácí pro Android a iOS
Rozdíly v look and feel se zmenšují. Pro aplikace, kde je klíčový zážitek z UI/UX, je nativní vývoj stále mírnou výhodou.
Offline mode – Remíza
Přechod do režimu offline může být velkou konkurenční výhodou. I když jsou uživatelé s vaší aplikací spokojeni, nedostatek offline funkcí je může donutit hledat alternativy. Offline funkce jsou důležité například v oblasti fintechu, zdravotnictví nebo u navigací. Nativní i cross-platform aplikace umožňují práci v režimu offline.
Specifický HW – Native
Využití cross-platform vývoje může vést k omezené podpoře a zvyšuje pravděpodobnost nedostatků při integraci specifického hardwaru. Pokud k němu potřebujeme přístup, nativní vývoj je rychlejší a jednodušší. Každá knihovna, aplikace nebo hardware má na prvním místě podporu pro nativní vývoj. To pomáhá zajistit bezproblémovou integraci nového produktu do stávající infrastruktury.
Výkon a rychlost aplikace – Native
Nativní aplikace iOS pracují s pamětí RAM mnohem efektivněji, takže aplikace reagují rychleji. Z technického hlediska Flutter používá Garbage collector a veškerý vývoj pro iOS je postaven na automatickém počítání referencí (ARC), které je mnohem efektivnější z hlediska paměti, takže nativní aplikace pro iOS využívají 1/3 paměti RAM ve srovnání s Flutterem. Potřeba další abstrakční vrstvy a procesu vykreslování cross-platformovou aplikaci zpomalují.
Problém se týká především všech frameworků, které používají bridge*, nebo běží výhradně ve WebView* (Ionic, Cordova). Aplikacím, které ke komunikaci s platformami používají bridge, je automaticky přiřazený bottleneck*, který je v mnoha případech velmi znatelný. Zároveň používají nativní komponenty, takže knihovny v těchto frameworcích mohou mít snadno různé verze nativních knihoven, což způsobuje obrovské konflikty v nativní části.
- *bridge – mechanismus, který umožňuje komunikaci a spolupráci různých programovacích jazyků nebo technologií. V tomto kontextu bridge spojuje dvě různé části aplikace a umožňuje jim sdílet data a funkce.
- *WebView – komponenta používaná při vývoji mobilních aplikací k zobrazení webové stránky v aplikaci.
- *bottleneck – zúžení nebo také součást, která omezuje rychlost a celkový výkon aplikace.
Použitá technologie má navíc velký vliv na velikost samotné aplikace. U aplikací pro iOS můžeme hovořit o 1/2 velikosti aplikace vytvořené ve Swiftu ve srovnání s Flutterem.
Náklady – Cross-platform
Cross-platform aplikace jsou skvělým způsobem, jak snížit náklady a zvýšit efektivitu, což je jistě jedna z hlavních předností, která stojí za zvážení. Vývoj nativních aplikací může být kvůli vývoji pro více platforem nákladný. V překladu to znamená, že budete potřebovat tým pro každou platformu – například jeden pro iOS a jeden pro Android. V tomto případě vám k vytvoření cross-platform aplikace stačí namísto dvou vývojářských týmů pouze jeden. ⚠️ Tento tým však bude muset mít zkušenosti s vývojem pro obě platformy.
Délka vývoje – Cross-platform
K vytvoření „základní“ verze aplikace, která funguje na více platformách, stačí jeden vývojový proces, takže můžete svou mobilní aplikaci uvést na trh rychleji. Je však důležité zmínit, že i když je samotný vývoj rychlejší, testování takových aplikací trvá stejně dlouho.
Hlavním problémem při vývoji a údržbě cross-platform aplikací je zastupitelnost lidí. Zejména u menších dodavatelů vývoje může odchod developera způsobit vážný problém.
Škálovatelnost – Native
Aplikace vytvořené v nativním prostředí jsou obvykle lépe škálovatelné díky flexibilitě správy zdrojů a mnoha dostupným nástrojům. Naopak u vývoje cross-platform jsou možnosti škálování značně omezené, zejména při práci s rozhraními třetích stran a periferiemi.
- Push notifikace – a jejich chování po otevření, routing na různé obrazovky aplikace. Zpracování oznámení push v zařízení podléhá pravidlům dané platformy. V systému Android je nutné řešit zařazení přijatých notifikací do společných skupin nebo přiřazení důležitosti notifikace. To jsou jen příklady pravidel, která se s novými verzemi systémů Android a iOS mění a při splnění těchto podmínek pro cross-platform se vývoj komplikuje.
- Reklamní modely – současným trendem na Googlu je prodej reklam pomocí Admobu, a to hlavně proto, že Google dokáže na své platformě cílit reklamy efektivně. Totéž ale neplatí pro systém iOS, který se v posledních verzích snaží uživatele co nejvíc anonymizovat, a tím bere prostor pro cílenou reklamu.
- Integrace s periferiemi – Z technického hlediska žádná omezení pro nativní vývoj neexistují. U cross-platform vývoje mohou mít vývojáři potíže s přístupem k funkcím smartphonu, jako je mikrofon, fotoaparát, geolokace nebo bluetooth. Nativní vývoj zároveň umožňuje při zpracování videa nebo zvuku pracovat s vysokou frekvencí snímků.
Bezpečnost – Remíza
Bezpečnost je v digitálním světě dlouhodobě tématem číslo jedna a u vývojářů aplikací a podniků by tomu nemělo být jinak. U cross-platform aplikací založených na webových technologiích (HTML, CSS, JavaScript) je nutné důkladně zvážit bezpečnost. Mohou být náchylnější k útokům, jako jsou cross-site scripting nebo injekční útoky. Na druhou stranu, nativní aplikace mají lepší integraci s bezpečnostními prvky systému.
Naše zkušenosti
Náš tým se vývoji nativních aplikací věnuje od samého počátku. Za tu dobu jsme měli možnost pracovat na projektech, kde jsme se setkali s mnoha implementacemi nativních knihoven, prací s rozšířenou realitou, kamerou, videem, bluetoothem, skenerem NFC, zabezpečením, widgety a mnoha dalšími možnostmi, které platformy iOS a Android nabízí. Naše odborné znalosti v oblasti nativního vývoje se proto netýkají jen programovacích jazyků, ale i integrace mnoha hardwarových a softwarových zařízení třetích stran.
V naší praxi jsme se setkali s různými možnostmi Cross-platform vývoje, které jsme měli možnost vyzkoušet, ale nativní vývoj bohužel plně nahradit nedokázaly. Proto byla nutná i znalost nativních technologií.
Za zásadní považujeme také výše uvedené faktory, jako je udržitelnost, zastupitelnost vývojářů a dodavatelů, garantovaná podpora a kompatibilita, rozšiřitelnost na další zařízení, lepší výkon a škálovatelnost.
Tatra banka - Bankovní aplikace roku
Nativní vývoj mobilní aplikace pro iOS i Android nám umožňuje pravidelně přicházet s inovacemi při zachování výkonu aplikace, škálovatelnosti a nejlepšího možného mobilního zážitku, proto je mobilní bankovníctví Tatra banky považováno za nejinovativnější na slovenském trhu.
Nativní vývoj nám zároveň umožňuje snadné přihlašování do aplikace pomocí obličeje a otisku prstu díky integraci pokročilé biometrie od lídra na trhu Innovatrics. Komplexní balík technologií společnosti Innovatrics pro online autentizaci zahrnuje také detekci a autentizaci údajů z dokladů totožnosti, biometrii obličeje NIST FRVT či akreditovanou detekci živosti iBeta Level 2, která je účinnou součástí prevence zneužití identity, což je v odvětví fintechu nezbytné. Aplikaci lze samozřejmě přizpůsobit nejen pro iOS a Android, ale i pro různé velikosti obrazovky.
Benu - Inovace online lekárny
Cílem při vytváření online mobilní lékárny pro Benu bylo vytvořit co nejjednodušší a nejsrozumitelnější uživatelský zážitek a zároveň zachovat všechny funkce, které jsme s klientem zmapovali. Aplikace pro platformy Android a iOS tedy bylo nutné vytvořit nativně.
Hlavními výhodami použití nativního vývoje jsou v tomto případě vyšší bezpečnost aplikace, soulad s legislativou v oblasti farmacie, lepší uživatelská zkušenost a integrace nativních knihoven. Uživatel může například přidat recept prostřednictvím fotoaparátu, z fotografie nebo prostřednictvím SMS.
Která možnost je tedy z hlediska jednotlivých faktorů ideální?

Na základě čeho se rozhodnout?
Ačkoli rozhodně cross-platform aplikace nezavrhujeme, existuje řada situací, ve kterých je efektivnější zvážit tyto přístupy. Kdy tomu tak je?
Kdy upřednostnit cross-platform vývoj?
- Pokud chcete rychle otestovat nápad nebo vytvořit MVP a co nejdříve vstoupit na trh s funkčním produktem.
- Pokud potřebujete pokrýt více platforem s omezeným rozpočtem a snížit náklady na vývoj i údržbu.
- Pokud aplikace nemá extrémně složité funkce, nároky na výkon nebo detailní nativní prvky UX.
- Pokud očekáváte jednodušší údržbu a méně komplikovanou správu kódu v rámci jednoho týmu.
- Pokud aplikace není klíčovým produktem vašeho podnikání, ale spíše doplňkem nebo rozšířením základních služeb.
Kdy upřednostnit nativní vývoj?
- Když je aplikace samotným produktem nebo základem vašeho podnikání a její kvalita/UX/bezpečnost rozhodují o úspěchu.
- Pokud v daném segmentu panuje silná konkurence a každý detail designu, výkonu nebo UX představuje konkurenční výhodu.
- Když aplikace vyžaduje vysokou správu paměti, komplexní a specifická uživatelská rozhraní nebo animace.
- Pokud potřebujete plný přístup k nativním funkcím operačního systému a specifickému hardwaru.
- Pokud potřebujete maximalizovat bezpečnost a ochranu citlivých firemních a zákaznických dat.
- Pokud je klíčové poskytnout komplexní a bezchybné uživatelské rozhraní, včetně offline režimu, který musí fungovat spolehlivě i bez připojení.
- Pokud váš produkt vyžaduje rychlejší a jednodušší implementaci aktualizací nových komplexních funkcí.
Oba přístupy mají své výhody a omezení. Naším cílem je vytvářet kvalitní digitální produkty, které využívají silné stránky každé platformy, a proto volíme technologii podle konkrétních potřeb projektu.

