Ez alapvetően két dolognak köszönhető:
A cross-platform megoldásoknál ezek a problémák mérséklődnek.
Minden ilyen megoldásnak a központi céljai között van, hogy a kódbázis amiből a végleges állományokat fordítjuk, minél kevesebb platformspecifikus részt tartalmazzon. Ez a gyakorlatban azt jelenti, hogy ha van egy iPhoneunk és egy Androidos telefonunk is, akkor az általunk megírt dolgok ne igényeljenek külön kezelést az egyes eszközökre, azaz ne kelljen különbséget tennünk a forrásban, hogy most éppen milyen telefonon vagy tableten fut a kész állományunk.
A natívhoz képest a másik véglet a web, itt egy úgynevezett WebViewt hozunk létre, ami gyakorlatilag egy böngészőablak, kezelőfelület nélkül, teljes kijelzőre méretezve. Mivel a böngészőmotorok nagyon hasonló funkciólistával rendelkeznek, egyszerre implementálhatunk mindent PC-re és okostelefonra. Így az egész nagyon gyorsan elkészül és ha nem kell a hardvert elérni (pl. rezgőmotort, értesítő ledet, ujjlenyomat olvasót), akkor verhetetlenül olcsó is.
Persze van hátránya is:
A futásteljesítmény és az előbb említett hardverkezelés. Előbbi ritkán jelent problémát, a jó optimalizáción múlik igazán, nem azon, hogy miben készül a termékünk.
Utóbbi már képes nagyobb gondokat okozni, mivel valahogy kötnünk kell a WebView tartalmát a natív funkciókhoz. Talán a legkézenfekvőbb egy saját API-t gyártani, amely csak a szükséges natív funkciókat implementálja, de ez olyan, mint újra feltalálni a kereket: Már van rá megoldás, az esetek nagy részében nem éri meg újat csinálni.
Erre nyújtanak megoldást a hybrid frameworkök, melyek általában webhez hasonló szintaxissal rendelkeznek, de olyan komponenseket is tartalmaznak, melyekkel kihasználhatóak a natív funkciók.
Gyakran használt kombináció a React Native és az Expo párosítása. Ha megnézzük előbbi dokumentációját, akkor viszonylag kevés alap komponenst találunk és ezek is inkább a layout kialakítására fókuszálnak. Az Expo ezt egészíti ki jónéhány hasznos dologgal.
Az egyszerűség kedvéért nézzük meg például, hogy miképpen lehet az akkumulátor töltöttségét lekérdezni. Ugye WebViewnál natív oldalon le kell kérdeznünk a BatteryManagertől ezt az adatot, aztán valahogy visszaadni egy végponton. Ezzel szemben a hibrid megoldást is elbonyolíthatjuk mindenfélével, de a lényeg nagyjából ennyi:
Ennél könnyebb dolgunk nem igazán lehetne, JSX-ben simán egyetlen sor a lekérdezés, ami egy 0 és 1 közötti float értéket ad vissza, illetve -1-et ha nem támogatott (pl. Android TV-ben hiába keresnénk akkumulátort).
Persze nem csak ennyi a történet, rengeteg mindent paraméterezhetünk. Például a gyorsulásmérő lekérdezésénél megadható az adatok frissítési intervalluma:
Ebben az esetben 1000ms-re állítottuk, azaz másodpercenként egyszer fog frissülni a mért érték.
Ugyanígy például az IP címet is lekérhetjük:
Illetve nem csak függvényeket, de propertyket is kapunk:
Így megkapjuk byteban az eszközbe épített RAM méretét. Ez értelemszerűen időben nem változik, így felesleges lenne aszinkron lekérdezés hozzá.
Látható tehát, hogy ha szeretnénk az eszköz beépített funkcióit is használni a mobil alkalmazás fejlesztés során, akkor érdemes a hibrid megoldásokat is számításba venni, mivel jelentősen megkönnyítheti a dolgunkat és rengeteg pénzt, illetve időt spórolhat nekünk.
Vegye fel velünk a kapcsolatot! Csapatunk szívesen segít bármilyen digitális megoldás elkészítésében.
Használhatunk külső könyvtárakat, illetve beépített térkép komponenst is kapunk ha Expo alapokra építkezünk az alkalmazásunkkal.
2022-10-28 18:13:00Korábban az asztali szoftverek nagyrészt Javaban vagy valamilyen C-szerű nyelven íródtak. Mára ez fordulni látszik, a JS alapú megoldások egyre erősödnek.
2022-10-14 17:20:00Mára a legtöbb weboldal dobta a régi Flash Playeres funkciókat, felváltotta őket a HTML5 és a Javascript használata. Ez utóbbi viszonylag gyakran kap frissítéseket, de aki nem követi, annak kevés esélye van észlelni, hiszen a böngészők nem igazán szoktak szólni róla, ha bejön egy-egy új szabvány amit implementálnak. 1997 óta nagy utat tett meg a JS, mára a legtöbb keretrendszer alapvető elvárásnak tekinti az ES6-ot. Az ECMAScript 2015 (azaz az ES6) számos új funkciót hozott a 4-6 évvel korábbi (attól függ, hogy az 5.1-et el akarjuk-e fogadni vagy sem) megoldáshoz képest.
2022-09-16 17:06:51