Cordova respektíve PhoneGap pluginy - pre vývoj mobilných aplikácií pre iOS a Android

Publikoval Michal Kočí dňa 19.4.2014 o 13:11 v kategórii Mobilné aplikácie

Ako som sľúbil, tentokrát sa pozrieme na pluginy. So samotným PhoneGapom získate sadu pluginov, ktoré sa vám zídu pri vývoji bežných mobilných aplikácií a pokiaľ vám tieto nestačia môžete si napísať pluginy vlastné...

Čo je to ten plugin?

Plugin pre PhoneGap je natívny kód pre danú platformu, ktorý môžete zavolať z vášho JavaScriptu. Je to teda rozšírenie JavaScriptového API, ktoré môžete používať. Ak potrebujete funkcionalitu, ktorá je súčasťou bežného API poskytovaného webovým prehliadačom (napríklad modifikácia DOM, vyvolávanie či odchýtávanie udalostí, ...), použijete samozrejme to.

Pokiaľ však chcete vo vašej aplikácii robiť niečo nad rámec bežnej funkcionality bežných webových prehliadačov (napríklad pristupovať na file systém telefónu, čítať kontakty z adresára, ...), budete musieť použiť plugin. Ak existuje. Ak neexistuje, buď si ho napíšete, alebo funkcionalitu jednoducho nepoužijete.

S pluginmi pracujeme aj na mojom školení programovania mobilných aplikácií v Cordove. Používame tie základné ale pozrieme sa aj na to, ako pluginy fungujú, čo vám položí základy pre napísanie si vlastného pluginu. Pokiaľ sa chcete rýchlo a ľahko naučiť programovať mobilné aplikácie v Javascripte, príďte na moje školenie.

Dôležité je si uvedomiť, že ak sa rozhodnete si napísať plugin, tak:

  • budete tento plugin musieť napísať v programovacom jazyku danej platformy (napríklad ObjectiveC pre iOS) a k nemu napísať kúsok JavaScriptu, ktorý zabezpečí zavolanie tejto fukcionality (tu vám pomôže PhoneGap)
  • tento plugin budete musieť napísať zvlásť pre každú platformu, ktorú chcete podporovať (v ObjectiveC pre iOS, v Jave pre Android, v .NET pre Windows Phone, ...)

Aké pluginy PhoneGap obsahuje?

Ako som už spomenul, PhoneGap obsahuje sadu pluginov, ktoré sú dostupné pre rôzne platformy. Ich celkový výčet (pre v momente písania tohto článku aktuálnu verziu 3.4) nájdete tu.

Tieto pluginy vám umožnia najmä:

  • zisťovať informácie o zariadení (operačný systém, verzia, ...)
  • pracovať s file systémom
  • sťahovať alebo nahrávať súbory na web
  • prehrávať alebo nahrávať audio
  • zisťovať informácie o sieťovom propojení
  • pracovať s kontaktmi z adresára
  • zisťovať pohyb a orientáciu zariadenia (akcelerometer a kompas)
  • a iné...

Je to dostatočná sada? Na väčšinu aplikácií určite.

Ale čo ak medzi pluginmi nie je taký, ktorý vám sprístupní funkcionalitu, ktorú pre vašu aplikáciu potrebujete? V tom prípade máte dve možnosti:

Ako si napíšem vlastný plugin?

V tomto momente už asi viete (alebo aspoň tušíte), že funkcionalita, ktorú by ste potrebovali, nie je k dispozícii, plugin aký by ste potrebovali neexistuje, takže neostáva iné, než si plugin napísať.

Asi vás zaujíma, teda malo by, či je to zložité. Odpoveď je klasicky šalamúnska - áno aj nie. Je to samozrejme zložité vtedy, keď toho o danej platforme veľa neviete a/alebo keď nepoznáte daný programovací jazyk. Ak však viete v danom programovacom jazyku naprogramovať funkcionalitu, ktorú potrebujete, napísať ju tak, aby ste ju vedeli používat z vášho JavaScriptu je už jednoduché.

Najlepšie sa to vysvetlí na príklade. Pre našu aplikáciu som potreboval funkcionalitu, ktorú PhoneGap neponúka - potreboval som prehrávanie audio integrovať so zamykacou obrazovkou. Teda, potreboval som z JavaScriptu notifikovať telefón o aktuálne prehrávanom audiu (autor, názov skladby, obrázok či pozícia prehrávania) a potreboval som tiež, aby ak užívateľ začne cez zamykaciu obrazovku ovládať audio, tak aby sa o tom aplikácia dozvedela a konala podľa požiadaviek používateľa.

Nakoľko som nikdy v ObjectiveC neprogramoval, znamenalo to naučiť sa tento krásny programovací jazyk (myslené mierne ironicky, no možno vám sa jazyk zapáči). Kníh o ObjectiveC je dosť, jedna vyšla aj v češtine a pre účely napísania pluginu je viac než dostatočná.

Pokiaľ už jazyk ObjectiveC zvládate, musíte zistiť, ako danú funkcionalitu naprogramovať, teda aké API použiť. V tomto vám pomôže Google na nájdenie hrubej kostry riešenia, ktoré doladíte dohľadaním popisu API v dokumentácii od Apple. Ja ako človek zvyknutý na dokumentáciu pre .NET na MSDN som niekedy chcel inžinierov z Apple stretnúť osobne, ale možno vám práve ich dokumentácia bude vyhovovať.

Akonáhle budete mať naštudované, ako funkcionalitu naprogramovať, ostáva už len napísať samotný plugin. To je na celej veci to najľahšie a veľmi vám pomôže dokumentácia (a existujúce pluginy, viď nižšie). O pluginoch a o tom, ako ich sprístupniť JavaScriptu si prečítate tu. V článku nájdete následne odkaz, ako písať druhú časť pluginu (tzv. native interface), teda implementáciu v programovacom jazyku tej ktorej platformy. Napríklad pre iOS je popis native interface tu.

A to je všetko. Akonáhle máte natívnu a aj JavaScriptovú časť hotovú, môžete začať plugin testovať a používať.

Komplikované?

Nie je to celé komplikované? Ani nie. Predstavte si, že by ste celú aplikáciu museli písať v natívnych technológiách, teda sa naučiť viacero programovacích jazykov, viacero frameworkov na tvorbu UI, atď. V porovnaní s tým je napísanie pluginu či dvoch hračka.

Čo je veľmi pozitívne, že existujúce PhoneGap (Cordova) pluginy sú dostupné aj so zdrojovým kódom. Preto ak sa vydáte cestou písania vlastných pluginov, rozhodne stojí za to, pozrieť si existujúce implementácie. Dokumentácia na písanie pluginov je na začiatok fajn, ale neobsahuje všetko. Napríklad ak budete potrebovať vyvolať udalosť nad dokumentom či zavolať callback neskôr alebo viac krát, riešenie nájdete skôr v existujúcich pluginoch než v dokumentácii. Preto si pred implementáciou vlastného pluginu určite pozrite zdrojový kód niektorých už existujúcich.

Nabudúce...

V pláne mám pozrieť sa ešte na to, ako počas vývoja debugovať či testovať. O tom ale až nabudúce, takže ostaňte naladení...

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.

Komentáre

K tomuto článku nie su pridané žiadne komentáre.

Pridať komentár

Máš niečo zaujímavé povedať k článku? Pridaj to k článku ako komentár. Spam, reklamu alebo inak nerelevantné komentáre okamžite mažem.