17. Jul 2023Business

Nativní 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 a Flutter.

GoodRequest FamilyLead, Build, Unite

Jaké existují možnosti?

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, Xamarin, Cordova

Proč preferujeme 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.

 

‍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

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.

Na druhou stranu může být v některých cross-platform aplikacích obtížné se orientovat, protože se prvky často překrývají a porušují doporučení. Cross-platform aplikace taky nemají nativní vzhled a nepůsobí nativně, což omezuje prvky UX v aplikaci. Celé to ale závisí hlavně na použité technologii. React Native používá nativní komponenty, takže doporučení pro UI/UX by neměla být problémem. Flutter má v tomto případě doplňkové knihovny, jejichž podpora je sporná. Flutter prosazuje jednotné uživatelské rozhraní napříč platformami, takže je vhodný pro aplikace s velmi nestandardním UI (nebyznysové).

Příklad rozdílu v UI aplikácí pro Android a iOS

Cross-platform aplikace v současné době zároveň nepodporují všechny prvky přístupnosti. Při vývoji a designu se od počátku zaměřujeme také na uživatele s tělesným znevýhodněním, zejména se zrakovým. A v tomto případě nelze ve Flutteru použít změnu velikosti písma ani hlasové ovládání.

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. 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. Cross-platform aplikace jsou postaveny na nativních frameworcích, takže jsou stejně bezpečné jako nativní aplikace, ale pokud uvažujete o hybridních řešeních založených na webových technologiích (HTML, CSS, JavaScript), určitě tento parametr pečlivě zvažte.

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?

  • Chcete rychle otestovat nápad, vytvořit MVP a vstoupit na trh.
  • Potřebujete aplikaci na různých platformách s omezeným rozpočtem.
  • Svou aplikaci musíte co nejrychleji uvést na trh.
  • Aplikace nepotřebuje složité funkce.
  • Snadnější podpora a údržba aplikace díky jednotné základně kódu.
  • Aplikace není pro váš byznys klíčová.

Kdy doporučujeme dát přednost nativnímu vývoji?

  • Vaše služba je založena na mobilní aplikaci nebo je sama o sobě produktem.
  • Ve vašem segmentu je silná konkurence a každý detail je výhodou.
  • Aplikace vyžaduje rozsáhlou správu paměti a složitá uživatelská rozhraní.
  • Aplikace potřebuje nativní funkce operačního systému a rozhraní API.
  • Pokud potřebujete za každou cenu chránit data a citlivé informace o své firmě a zákaznících.
  • Poskytování komplexního UX je klíčové.
  • Pokud potřebujete, aby vaše aplikace fungovala bezchybně v režimu offline.
  • Váš produkt vyžaduje rychlejší a snadnější implementaci aktualizací nových komplexních funkcí.

Oba jazyky mají jistě své výhody i nevýhody, ale naším cílem je vytvářet smysluplné a zodpovědné digitální produkty, a to si žádá možnosti nativní platformy, proto se držíme nativního jazyka.

GoodRequest FamilyLead, Build, Unite

Kontaktujte nás

Radi vám poradíme

Stále si nejste jisti, jakým směrem se s aplikací vydat? Kontaktujte nás ještě dnes a my vám pomůžeme zjistit, co je pro váš projekt ideální.