30. Jan 2023Business

Natívny vs. cross-platform: Ako si vybrať správny spôsob mobilného vývoja?

Vo svete mobilných aplikácií prebieha "večná" diskusia o ideálnom spôsobe vývoja a túto otázku často dostávame aj od našich klientov. V tomto článku dozviete výhody a nevýhody jednotlivých možností vývoja a pozrieme sa aj na technické a netechnické argumenty z pohľadu našich biznis analytikov, architektov riešení a vývojárov, ktorí majú skúsenosti s jazykmi Kotlin, Swift a Flutter.

GoodRequestLead, Build, Unite

Aké existujú možnosti?

Natívny vývoj

Natívne aplikácie sú vyvinuté pre konkrétnu platformu, napríklad iOS alebo Android. Programovací jazyk použitý na vytvorenie týchto aplikácií je kompatibilný s operačným systémom. Používaním jazykov špecifických pre danú platformu môžu vývojári lepšie využívať natívne funkcie platformy. Takže aplikácia vytvorená pre Android nebude fungovať na zariadeniach Apple.

  • 🤖 Android: Kotlin, Java.
    Development environment: Android Studio
  • 🍏 iOS: Swift, Objective-C.
    Development environment: Xcode

Cross-platform

Cross-platformový prístup vývoja mobilných aplikácií umožňuje vytvoriť jednu aplikáciu, ktorá funguje na viacerých operačných systémoch rovnako. To znamená, že nemusíte vytvárať samostatné verzie pre každú jednotlivú platformu.

  • Cross-platform: Ionic, React Native, Flutter, Xamarin, Cordova

Prečo preferujeme natívny vývoj?

Natívnemu vývoju sa venujeme od úplného začiatku, za ten čas sme sa stretli s mnohými implementáciami natívnych knižníc, prácou s rozšírenou realitou, kamerou, videom, Bluetooth, NFC skenerom, bezpečnosťou, widgetmi a mnohými ďalšími možnosťami, ktoré ponúkajú iOS a Android platformy. Naša expertíza v natívnom vývoji sa teda nepohybuje len na úrovni programovacích jazykov ale aj integrácii hardwaru a softvéru tretích strán.

Takmer všetky známe a obľúbené aplikácie používané veľkým množstvom používateľom sú postavené na natívnych technológiách. Z pohľadu obchodného modelu je dôležitá “trvácnosť” technológií. Cross-platformové technológie, ako napríklad Flutter, sa menia extrémne dynamicky, zatiaľ čo React native, či niektoré knižnice tretích strán stagnujú, čo môže viesť k nekompatibilite pri zostavovaní aplikácie. Všetky tieto faktory môžu viesť k rôznym problémom, ako je oneskorenie vývoja, nedostupnosť vývojárov alebo používanie zastaraných technológií.

Avšak uvedomujeme si, že v niektorých biznis prípadoch môže byť cross-platform vývoj správnou cestou, dôležité je sa rozhodnúť na základe kľúčových parametrov vyplývajúcich z vašej biznisovej stratégie. Preto sme pre vás pripravili kľúčové oblasti dizajnu a vývoja aj s benefitmi a rizikami jednotlivých foriem vývoja.

Aké parametre zvážiť pri výbere prístupu k tvorbe mobilnej aplikácie?

UX & UI – Native

Používatelia hľadajú aplikácie, ktoré vyzerajú a pôsobia, akoby patrili do ich zariadenia. Natívne aplikácie pre iOS a Android sú vytvorené pomocou komponentov používateľského rozhrania, na ktoré sú používatelia zvyknutí z iných natívnych aplikácií, vďaka čomu vytvoríte prirodzený a zároveň výnimočný používateľský zážitok.

Na druhej strane u niektorých cross-platform aplikácií môže byť navigácia zložitá, pretože prvky sa často prekrývajú a porušujú guidelines, cross-platform aplikáciám tiež chýba natívny look and feel, čo obmedzuje UX prvky aplikácie. To však závisí najmä od použitej technológie, React Native používa natívne komponenty, takže UI/UX guidelines by nemali byť problémom. Flutter má v tomto prípade doplnkové knižnice, ktorých podpora je otázna. Flutter presadzuje jednotné UI medzi platformami, takže je vhodný pre aplikácie s veľmi neštandardným UI (nebiznisové).

Príklad rozdielu v UI aplikácií pre Android a iOS

Cross-platform aplikácie zároveň v súčasnosti nepodporujú všetky prvky Accessiblity. Pri vývoji a dizajne sme sa od začiatku zameriavame aj na používateľov s telesným znevýhodnením, najmä zrakovým. Zmenu veľkosti písma alebo hlasové ovládanie nie je možné v tomto prípade v aplikácii Flutter použiť.

Offline mode – Remíza

Prechod do režimu offline môže byť veľkou konkurenčnou výhodou. Aj keď sú používatelia s vašou aplikáciou spokojní, nedostatok offline funkcií ich môže prinútiť hľadať alternatívy. Offline funkcie sú dôležité napríklad vo fintech, zdravotníctve či pri navigáciách. Natívne aj cross-platform aplikácie umožňujú prácu v režime offline.

Špecifický HW – Native

Použitie cross-platform vývoja môže mať za následok obmedzenú podporu a zvyšuje pravdepodobnosť nedostatkov pri integrácii špecifického hardvéru. Každá knižnica, aplikácia alebo hardvér má v prvom rade podporu pre natívny vývoj. Čo pomáha zabezpečiť bezproblémovú integráciu nového produktu do existujúcej infraštruktúry.

Výkon a rýchlosť aplikácie – Native

Natívne aplikácie iOS pracujú s pamäťou RAM podstatne efektívnejšie, vďaka čomu aplikácie reagujú svižnejšie. Z technického hľadiska Flutter používa Garbage collector a celý vývoj pre iOS je postavený na automatic reference counting (ARC), ktoré je pri práci s pamäťou oveľa efektívnejšie, vďaka čomu natívne aplikácie pre iOS využívajú 1/3 RAM v porovnaní s Flutterom. Potreba ďalšej abstrakčnej vrstvy a procesu vykresľovania spôsobuje, že cross-platformová aplikácia je pomalšia.

Problém je predovšetkým so všetkými frameworkmi, ktoré používajú bridge*, alebo bežia úplne vo WebView* (Ionic, Cordova). Aplikácie, ktoré používajú na komunikáciu s platformami bridge, majú automaticky pridelený bottleneck*, ktorý je v mnohých prípadoch mimoriadne citeľný. Zároveň používajú natívne komponenty, takže knižnice v týchto frameworkoch môžu mať ľahko rôzne verzie natívnych knižníc, čo spôsobuje obrovské konflikty v natívnej časti.

  • *bridge – mechanizmu, ktorý umožňuje komunikáciu a spoluprácu rôznych programovacích jazykov alebo technológií. V tomto kontexte bridge spája dve rôzne časti aplikácie a umožňuje im zdieľať údaje a funkcie.
  • *WebView – komponent používaný v mobilnom vývoji na zobrazenie webovej stránky v aplikácii.
  • *bottleneck – úzke miesto alebo tiež komponent, ktorý obmedzuje rýchlosť a celkový výkon aplikácie.

Použitá technológia má tiež veľký vplyv na veľkosť samotnej aplikácie. V prípade aplikácií pre iOS môžeme hovoriť o 1/2 veľkosti aplikácie vyvinutej v Swifte v porovnaní s Flutterom.

Náklady – Cross-platform

Cross-platform aplikácie sú skvelým spôsobom, ako znížiť náklady a zvýšiť efektivitu, čo je určite jeden z hlavných prínosov, ktorý stojí za zváženie. Vývoj natívnych aplikácií môže byť nákladný z dôvodu vývoja viacerých platforiem. V preklade budete potrebovať tím pre každú platformu - napríklad jeden pre iOS a jeden pre Android. V tomto prípade vám namiesto dvoch tímov vývojárov bude na vytvorenie Cross-platform aplikácie stačiť len jeden. ⚠️ Tento tím však bude musieť mať skúsenosti s vývojom pre obe platformy.

Trvanie vývoja – Cross-platform

Na vytvorenie "základnej" verzie aplikácie, ktorá funguje na viacerých platformách, stačí jeden vývojový proces, takže svoju mobilnú aplikáciu môžete uviesť na trh  rýchlejšie. Dôležité je však spomenúť, že hoci je samotný vývoj rýchlejší, testovanie takýchto aplikácií trvá rovnako dlho.

Hlavným problémom pri vývoji a údržbe cross-platform aplikácie je zastupiteľnosť ľudí. Najmä v prípade menších dodávateľov vývoja môže odchod developera spôsobiť vážny problém.

Škálovateľnosť – Native

Aplikácie vytvorené v natívnom prostredí sú zvyčajne lepšie škálovateľné vďaka flexibilite správy zdrojov a množstvu dostupných nástrojov. Naopak pri cross-platform vývoji sú možnosti škálovania výrazne obmedzené, najmä pri práci s rozhraniami tretích strán a perifériami.

  • Push notifikácie – a ich správanie po otvorení, routing do rôznych obrazoviek aplikácie. Spracovanie push notifikácií na zariadení podlieha pravidlám danej platformy. Na androide je potrebné riešiť zaradenie doručených notifikácii do spoločných skupín, či priradenie dôležitosti notifikácie. Sú to len príklady pravidiel, ktoré sa s novými verziami Android a iOS menia a pri splnení týchto podmienok pre cross-platform sa vývoj komplikuje.
  • Reklamné modely – aktuálne je trendom na Google predávať reklamy pomocou Admob a to hlavne z dôvodu, že google je schopný cieliť reklamy na svojej platforme efektívne. To isté však neplatí o iOS, ktorý sa v posledných verziách snaží čo najviac anonymizovať používateľa a tým berie priestor na cielenú reklamu.
  • Integrácia s perifériami – Z technického hľadiska neexistujú pre natívny vývoj žiadne obmedzenia. Pri cross-platform vývoji môžu mať vývojári problém s prístupom k funkciám smartfónu, ako je mikrofón, fotoaparát, geolokácia či Bluetooth. Zároveň umožňuje natívny vývoj pracovať s vysokou frekvenciou snímok za sekundu pri spracovaní videa či audia.

Bezpečnosť – Remíza

Bezpečnosť je dlhodobo témou číslo jeden v digitálnom svete a nemalo by to byť inak ani v prípade vývojárov aplikácií a podnikov. Cross-platform aplikácie sú postavené na natívnych frameworkoch, čiže sú rovnako bezpečné ako natívne aplikácie, avšak ak uvažujete o hybridných riešeniach založených na webových technológiách (HTML, CSS, JavaScript), nezabudnite tento parameter dôkladne zvážiť.

Naše skúsenosti

Náš tím sa venuje natívnemu vývoju od úplného začiatku. Za tento čas sme mali možnosť pracovať projektoch, kde sme sa stretli s mnohými implementáciami natívnych knižníc, prácou s rozšírenou realitou, kamerou, videom, Bluetooth, NFC skenerom, bezpečnosťou, widgetmi a mnohými ďalšími možnosťami, ktoré ponúka platforma iOS a Android. Naša expertíza v natívnom vývoji sa teda nepohybuje len na úrovni programovacích jazykov ale aj integrácie mnohých hardwaru a softvéru tretích strán.

Za našu prax sme sa stretli s rôznymi možnosťami Cross-platform vývoja, ktoré sme mali možnosť otestovať ale bohužiaľ nedokázali nahradiť úplne natívny vývoj a preto bola potrebná znalosť aj natívnych technológií.

Taktiež za podstatné považujeme už spomenuté faktory ako je udržateľnosť, zastupiteľnosť vývojárov a dodávateľa, garantovaná podpora a kompatibilita, rozšíriteľnosť na iné zariadenia, lepší výkon a škálovateľnosť.

Tatra banka - Banková aplikácia roka

Natívny vývoj mobilnej aplikácie pre iOS aj Android nám umožňuje pravidelne prinášať inovácie pri zachovaní výkonu aplikácie, škálovateľnosti a čo najlepšieho mobilného zážitku, preto je mobilné bankovníctvo Tatra banky považované za najinovatívnejšie na slovenskom trhu.

Natívny vývoj nám tiež umožňuje jednoduché prihlasovanie do aplikácie pomocou tváre a odtlačku prsta vďaka integrácii modernej biometrie od lídra na trhu Innovatrics. Komplexný balík technológií Innovatrics pre online autentifikáciu zahŕňa aj detekciu a autentifikáciu údajov z dokladov totožnosti, biometriu tváre NIST FRVT či akreditovanú iBeta Level 2 detekciu živosti, ktorá je účinnou súčasťou prevencie zneužitia identity, čo je vo fintech sektore nevyhnutnosťou. Samozrejmosťou je aj prispôsobenie aplikácie nielen pre iOS a Android, ale aj pre rôzne veľkosti obrazovky.

Benu - Inovácia online lekárne

Cieľom pri tvorbe online mobilnej lekárne pre Benu bolo vytvoriť čo najjednoduchší a najzrozumiteľnejší používateľský zážitok, pri zachovaní všetkých funkcionalít, ktoré sme s klientom zmapovali, preto bolo nevyhnutné vytvoriť aplikácie pre Android a iOS platformy natívne.

Hlavnými výhodami použitia natívneho vývoja sú v tomto prípade vyššia bezpečnosť aplikácie, súlad s legislatívou v oblasti farmácie, lepšia používateľská skúsenosť a integrácia natívnych knižníc. Používateľ môže napríklad pridať recept prostredníctvom fotoaparátu, z fotografie alebo prostredníctvom SMS.

Ktorá možnosť je teda z pohľadu jednotlivých faktorov ideálna?

Takže na základe čoho sa rozhodnúť?

Cross-platform aplikácie určite nezavrhujeme, existuje mnoho situácií, v ktorých je efektívnejšie zvážiť tieto prístupy, kedy?

Kedy uprednostniť cross-platform vývoj?

  • Chcete rýchlo otestovať nápad, vytvoriť MVP a vstúpiť na trh.
  • Potrebujete aplikáciu na rôznych platformách s obmedzeným rozpočtom.
  • Musíte svoju aplikáciu čo najrýchlejšie uviesť na trh.
  • Aplikácia nepotrebuje zložité funkcionality.
  • Jednoduchšia podpora a údržba aplikácie vďaka jednotnej základni kódu.
  • Aplikácia nie je pre váš biznis kľúčová.

Kedy odporúčame uprednostniť natívny vývoj?

  • Vaša služba je založená na mobilnej aplikácii alebo je samotným produktom.
  • Vo vašom segmente je silná konkurencia a každý detail je výhodou.
  • Aplikácia si vyžaduje vysokú správu pamäte a zložité používateľské rozhrania.
  • Aplikácia potrebuje natívne funkcie operačného systému a API.
  • Ak potrebujete za každú cenu chrániť údaje a citlivé informácie o svojej firme a zákazníkoch.
  • Poskytnutie komplexného UX je kľúčové.
  • Ak potrebujete, aby vaša aplikácia fungovala bezchybne v režime offline.
  • Váš produkt vyžaduje rýchlejšiu a jednoduchšiu implementáciu aktualizácií nových komplexných funkcií.

Oba jazyky majú určite svoje výhody aj nevýhody, ale naším cieľom je vytvárať zmysluplné a zodpovedné digitálne produkty, a to si vyžaduje možnosti natívnej platformy, preto sa držíme natívneho jazyka.

GoodRequestLead, Build, Unite

Kontaktujte nás

Radi vám poradíme

Stále si nie ste istí, ktorým smerom sa s aplikáciou vydať? Kontaktujte nás ešte dnes a my vám pomôžeme zistiť, čo je pre váš projekt ideálne.