33
WordPressin REST-rajapinnan käyttö Cordova-mobiilisovelluksessa Mikko Hytönen Opinnäytetyö Joulukuu 2016 Mediatekniikan koulutusohjelma Insinööri (AMK)

WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

WordPressinREST-rajapinnankäyttöCordova-mobiilisovelluksessaMikkoHytönenOpinnäytetyöJoulukuu2016MediatekniikankoulutusohjelmaInsinööri(AMK)

Page 2: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

Kuvailulehti

Tekijä(t)Hytönen,Mikko

JulkaisunlajiOpinnäytetyö,AMK

Päivämäärä joulukuu2016

Sivumäärä30

JulkaisunkieliSuomi

Verkkojulkaisulupamyönnetty:x

TyönnimiWordPressinREST-rajapinnankäyttöCordova-mobiilisovelluksessa

Tutkinto-ohjelmaMediatekniikkaTyönohjaaja(t)PasiManninenToimeksiantaja(t)Into-DigitalOy

Tiivistelmä

OpinnäytetyötoteutettiinInto-DigitalOy:lle.Toimeksiantajantavoitteenaolitoteuttaaasi-akkaallesivustouudistusjasenrinnallemobiilisovellusiOS-jaAndroid-laitteille.Sovelluk-senlähtökohtanaolileikkimielinentilausosio,jonkarinnallehaluttiintuodasivustonsisäl-löt.Lisäksisovellukseenpäätettiintoteuttaalisäarvoatuoviaominaisuuksia,kutensisällönjakaminenjailmoituksetsisältöpäivityksistäsovelluksenkäyttäjille.

SovelluspäätettiintoteuttaaApacheCordova-sovelluskehitysalustalle,jokaontarkoitettusovellustenkehittämiseenuseallemobiilikäyttöjärjestelmälleyhtäaikaisesti.Cordovallaso-velluskehitystapahtuimoderneillaweb-tekniikoillajajärjestelmienvalmiitatoimintojapys-tyttiinhyödyntämäännatiivilaajennustenavulla.CordovantukenakäytettiinAdobenPho-neGap-kehitystyökaluja,joidenavullasovellustajanatiivitoimintojapystyttiintestaamaantehokkaastijalangattomastilähiverkossa.

SivustouudistukseenvalittiinWordPress-sisällönhallintajärjestelmä,jokatoimimyössovel-luksentaustapalvelunasisäänrakennetunrajapinta-arkkitehtuurinjalaajennustenavulla.SisällönhallintaalaajennettiinvastaamaanasiakkaantarpeitaomillasisältötyypeilläjaAd-vancedCustomFields-laajennuksentietokentillä.

Lopputuloksenatoimeksiantajanasiakassaitilaamansauudensivustonjamobiilisovelluk-sen.Toimeksiantajalletoteutustoimiireferenssinäjapohjatoteutuksenavastaavilleprojek-teille.Toteutukseentehtiinuseitajatkossahyödynnettäviäratkaisuja,kutenWordPressinrajapinnankäyttöönottosekäyleispäteväprosessisenhyödyntämisellesovelluksissa.Sa-moinpush-viestienkäyttöönottoajaintegrointiaWordPress-sisällönhallintaanvoidaantar-jotajatkossatoimeksiantajanasiakkaille.

Avainsanat(asiasanat)mobiilisovellukset,Cordova,PhoneGap,WordPressMuuttiedot

Page 3: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

Description

Author(s)Hytönen,Mikko

TypeofpublicationBachelor’sthesis

DateDecember2016Languageofpublication:Finnish

Numberofpages30

Permissionforwebpubli-cation:x

TitleofpublicationUseofWordPressRESTAPIinCordovamobileapplication

DegreeprogrammeMediaEngineering

Supervisor(s)Manninen,PasiAssignedbyInto-DigitalOy

Abstract

TheprojectwasassignedbyInto-DigitalOywiththeobjectivetobuildanewwebsiteandacompanionmobileappforaclient.TheappwouldbeavailableforiOSandAndroidde-vices.Themainideafortheappwastopresentaplayfulorderinginstructionsectioncom-plementedbycontentfromthewebsite.Toaddvalueforusers,someadditionalfeatureswereplanned;e.g.toletuserssharecontentandnotifythemaboutcontentupdates.

TheappwasdevelopedusingApacheCordovaapplicationdevelopmentframework,whichsupportspublishinginmultipleoperatingsystems.UsingCordova,anappwasbuiltwithmodernwebtechniques,andnativefeaturescanbeaccessedthroughnativepluginarchi-tectureandpluginsdevelopedbyCordovacommunity.InadditiontoCordova,PhoneGapdevelopmenttoolsbyAdobewereused.ThetoolsenabledtestingtheappanditsnativefeaturesoniOSandAndroiddeviceswirelesslyinalocalnetwork.

WordPresscontentmanagementsystemwasusedtobuildthewebsite.Theappwascon-nectedtoWordPressthroughbuilt-inRESTAPIarchitectureandplugins.Thecontentman-agementwascustomizedtomeettheneedsoftheclientusingcustomposttypesandAd-vancedCustomFieldsplugin.

Inconclusion,thewebsiteandthemobileappwerebuiltsuccessfullyandtheclient’sre-quirementsweremet.ForInto-Digital,theprojectwillbeusedasareferenceandasabaseimplementationforsimilarprojectsinthefuture.Severalaspectsoftheimplementationarereusable,e.g.settinguptheWordPressRESTAPIandagenericprocessforaccessingitandcachingtheresultsforofflineuseinanapp.AnotherreusableaspectissettinguppushnotificationsandintegratingthemtoWordPresscontentmanagement.

Keywords/tags(subjects)mobileapplications,Cordova,PhoneGap,WordPressMiscellaneous

Page 4: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

1

Sisältö

1 Lähtökohdat..........................................................................................................3

1.1 Toimeksiantaja...........................................................................................3

1.2 Tavoitteet...................................................................................................3

2 ApacheCordova....................................................................................................4

2.1 Yleistä.........................................................................................................4

2.2 Tuetutkäyttöjärjestelmät...........................................................................5

2.3 Natiivilaajennukset.....................................................................................5

2.4 Kehitystyökalujenvalinta...........................................................................6

2.4.1 Johdanto................................................................................................6

2.4.2 PhoneGap..............................................................................................7

3 WordPressinREST-rajapinta..................................................................................8

3.1 WordPress..................................................................................................8

3.2 REST-rajapinta............................................................................................9

3.2.1 Johdanto................................................................................................9

3.2.2 Rajapinnanrakenne.............................................................................10

3.2.3 Sivustonrakenne.................................................................................10

3.2.4 AdvancedCustomFields-laajennus....................................................11

3.2.5 Rajoitukset...........................................................................................12

4 Mobiilisovellus.....................................................................................................12

4.1 Käyttöliittymä...........................................................................................12

4.1.1 Rakenne...............................................................................................12

4.1.2 ValitutHTML5-tekniikatjaJavaScript-kirjastot....................................13

4.1.3 Ractive.js-käyttöliittymä......................................................................14

4.2 Sovellusarkkitehtuuri................................................................................16

4.3 Offline-käyttö...........................................................................................18

4.3.1 Johdanto..............................................................................................18

Page 5: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

2

4.3.2 LocalStorage-tietokanta.......................................................................18

4.3.3 Online-synkronointi.............................................................................19

4.4 Push-viestit...............................................................................................20

4.4.1 Johdanto..............................................................................................20

4.4.2 Välityspalvelut.....................................................................................20

4.4.3 Käyttöönotto........................................................................................20

4.4.4 Käyttäjänrekisteröinti.........................................................................21

4.4.5 Käyttö...................................................................................................22

4.5 Natiivijaot.................................................................................................23

4.6 Seuranta...................................................................................................24

4.7 Muutlaajennukset...................................................................................25

5 Tulokset...............................................................................................................26

6 Pohdinta..............................................................................................................27

Lähteet........................................................................................................................29

Kuviot

Kuvio1.Käytetyimmätsisällönhallintajärjestelmät......................................................9

Kuvio2.Sovelluksenkäyttöliittymä:tilausosiojavalikko...........................................13

Kuvio3.Sovelluksenarkkitehtuuri..............................................................................17

Kuvio4.Sovelluksenrajapintapyynnöt.......................................................................18

Kuvio5.Käyttäjänrekisteröiminenpush-viestienvälityspalveluun............................22

Kuvio6.Push-viestienlähettäminen...........................................................................23

Kuvio7.KäyttöjärjestelmänjakodialogiAndroidilla....................................................24

Taulukot

Taulukko1.Cordovantukematkäyttöjärjestelmät.......................................................5

Page 6: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

3

1 Lähtökohdat

1.1 Toimeksiantaja

TyöntoimeksiantajaoliInto-DigitalOy,HelsingissäjaJyväskylässätoimivadigitaali-

senmediantoimisto.Into-Digitaltekeepääasiassatoteutuksiamarkkinointiviestintä-

alantarpeisiin:muunmuassasivustoja,teemasivuja,display-mainoksiajamobiiliso-

velluksia.

1.2 Tavoitteet

Toimeksiantajantavoitteenaolitoteuttaaasiakkaallesivustouudistusjasenrinnalle

mobiilisovellusiOS-jaAndroid-laitteille.Opinnäytetyössätarkastellaanerityisestimo-

biilisovelluksentoteutustahyödyntäensivustoarajapintojenvälityksellä.

Toteutettavansovelluksenlähtökohtanaolileikkimielinentilausohje,jotakäyttäjä

pystyyseuraamaanvaihekerrallaan.Tämänideanrinnallesovellukseenpäätettiin

tuodamukaansivustonsisällötsekätoteuttaasovelluksellelisäarvoaantaviaominai-

suuksia,kutensisältöjenjakaminenjailmoituksetsisältöpäivityksistä.Taustallesovel-

lukseensuunniteltiinseurantamittareita,joidenperusteellasovelluksenkäyttäjämää-

ristä,ominaisuuksienkäytöstäjakäyttäjäryhmistäsaataisiintilastoja.

ToimeksiantajaonerikoistunutWordPress-sivustoihinjaWordPressinsisällönhallin-

nanhyödyntämiseenerikoistoteutuksissa.Tästäsyystäseoliilmeinenvalintasivusto-

uudistuksenpohjalle.Sovellustarjosimyösmahdollisuudenlaajentaayrityksenosaa-

mistaWordPressinuuteen,sisäänrakennettuunrajapinta-arkkitehtuuriin.

ToimeksiantajallaolimyösaiempaakokemustaApacheCordovasta,jonkapäälleso-

velluspäätettiintoteuttaa.Kokemuksenlisäksivalinnassaolitaustallamahdollisuus

laajentaamyöhemminWindows-laitteillesekäCordovanpohjautuminenweb-teknii-

koihin,mikäontoimeksiantajanydinosaamista.Toteutusolitoimeksiantajalleensim-

mäinentälläteknologiayhdistelmälläjatoimiisekäreferenssinäettäpohjatoteutuk-

senavastaavilleprojekteille.

Page 7: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

4

2 ApacheCordova

2.1 Yleistä

ApacheCordovaonavoimenlähdekoodinsovelluskehitysalusta,jokaonensisijaisesti

tarkoitettusovellustenkehittämiseenuseallemobiilikäyttöjärjestelmälleyhtäaikai-

sesti.Cordovatarjoaakullekintuetullekäyttöjärjestelmällenatiivinrungonsekäraja-

pinnannatiiveihintoimintoihinjasensoreihin.Varsinainenkehitystapahtuujärjestel-

märiippumattomastimoderneillaweb-tekniikoilla.(CordovaOverview2016.)

Tällaistamalliakutsutaanhybridisovelluskehitykseksi.Lopullinensovellusonkäyttä-

jännäkökulmastatäysinnatiivi,muttakäyttöliittymääjalogiikkaaajetaanselainnäky-

mässä,jokatäyttääkokonäyttöalan.Sovelluksensaamyöserivalmistajiensovellus-

kauppoihin.Julkaisuprosessitovatkuitenkinjärjestelmäriippuvaisia,eikäCordovaota

niihinkantaa.

Useallekäyttöjärjestelmällekehitettäessätämäkehitysmallisäästääresursseja,yhte-

näistääkäyttökokemuksenjapäivitykset.Resurssejasäästyy,koskaominaisuuksiaei

tarvitsetoteuttaauseaankertaan,useallaohjelmointikielellä.Tästäsyystämyöskehi-

tystiimionmahdollistapitääpienempänä.Web-tekniikoillatoteutettukäyttöliittymä

käyttäytyypitkältisamallatavallaerijärjestelmissäjaonluonnostaanskaalattavissa

erinäyttöko’oille.Koskaominaisuudettoteutetaankerralla,onpäivityksethelpompi

julkaistaerikäyttöjärjestelmillekerralla.Erisovelluskauppojenhyväksyntäprosessit

voivattosinviivyttääpäivitystä.

Hybridisovellustenkehityksessäonmyöshaasteita.Päällimmäisenäonsaadakäyttö-

liittymätuntumaannatiiviltajareagoimaanyhtänopeastikuinnatiiveissasovelluk-

sissa.Selaimiennykykehityksenmyötätämäonlähinnäoptimointikysymys.Toinen

haasteovatkäyttöjärjestelmieneroavuudet.Esimerkiksikäyttöliittymiengraafiset

ohjeistotvoivatollaristiriitaisia,laitteenfyysisetpainikkeetjasensoriteroavatjase-

laintenominaisuudeteivätolesamallatasolla.

Page 8: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

5

2.2 Tuetutkäyttöjärjestelmät

Cordovatukeemarkkinoidenyleisimpiämobiilikäyttöjärjestelmiä,joistaparhaitentu-

ettujaovatiOSjaAndroid.WindowsPhonelleonollutversiosta8lähtientuki,joka

parantuimerkittävästiversioissa8.1ja10,kunMicrosoftyhtenäistityöpöytä-jamo-

biilikehitysalustansa.LisäksiCordovallaonmahdollistakehittäätyöpöytäsovelluksia

Windowsille,OSX:llejamacOS:llesekäUbuntulle(ks.taulukko1).

Taulukko1.Cordovantukematkäyttöjärjestelmät(PlatformSupport2014)

Android Black-

Berry10

iOS Ubuntu Windows

Phone8

Windows

(8.1,10,

Phone8.1)

OSX,

macOS

cordova

CLI

✔Mac,

Windows,

Linux

✔Mac,

Windows,

Linux

✔Mac ✔Ubuntu ✔Windows ✔ ✔Mac

Embedded

WebView

✔ ✘ ✔ ✔ ✘ ✘ ✔

Plugin

Interface

✔ ✔ ✔ ✔ ✔ ✔ ✔

2.3 Natiivilaajennukset

Hybridisovelluskehityksentärkeinedellytysonpystyähyödyntämäänsamojatoimin-

tojakuinnatiivillaohjelmointikielellä.Näinhybridisovelluspystyykilpailemaannatii-

visovellustenkanssajatarjoamaankäyttäjillelisäarvoatavalliseenverkkosivuunnäh-

den.Sovelluskaupatvoivatjopavalvoatätä,esimerkiksiApplevoihylätäsovelluksen

jokaeieroaverkkosivusta(AppStoreReviewGuidelinesn.d.).

Cordovassatämäonratkaistulaajennusrajapinnalla,jonkaavullaalustaapystyyva-

paastilaajentamaan.Laajennuksentoiminnotohjelmoidaannatiiveillakielilläjaniille

määritelläänrajapintaankutsut,joidenkauttatoimintojapystytäänkäyttämäänJava-

Scriptillasovelluksenlogiikasta.(CordovaOverview2016.)

Page 9: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

6

Laajennustentoteuttaminenontäysinavointa.Cordovajasenpäällerakennetut

alustattarjoavatlaajennuksiayleisimpiintarpeisiin,muttapääosanlaajennuksistato-

teuttaakehittäjäyhteisö.Laajennustenjakelutapahtuupääasiassajulkistennpm-ja

git-repositorioidenkautta,joidenkauttaasentamistaCordovatukeesuoraan.

2.4 Kehitystyökalujenvalinta

2.4.1 Johdanto

Cordovaavoikäyttääsellaisenaanalustanmukanatulevillakomentorivityökaluilla.

Muttakoskaalustaonavoin,senpohjaltaonrakennettuuseitakehitystyökalujaja-

malleja.Vaihtoehtoisettyökalutratkaisevathybridisovelluskehityksenhaasteitaosa-

alueilla,joihinCordovaeiotakantaa.

Osavaihtoehdoistatarjoaavalmiitakäyttöliittymäratkaisuja,jotkavoivatnopeuttaa

natiivintuntuisensovelluksenkehittämistä,taivalmiitaprojektipohjia,joissaonesi-

asennettunatiettyynkäyttötapaukseentarvittavatlaajennukset.Esimerkkinäensin

mainitusta,IonicinratkaisussakäyttöliittymätoteutetaanAngularJS-alustanpäälleja

mukanatuleelaajakirjastokäyttöliittymäkomponentteja(IonicComponent

Documentationn.d.).Tällainenonerityisenhyväratkaisu,mikälisovelluksenkäyttö-

liittymästähalutaanmyösnatiivinnäköinen.JälkimmäisestäesimerkkinäPhoneGap

tarjoaavalmiinprojektipohjanmuunmuassapush-viestienkäyttöönottoonjavas-

taanottamiseen(PushNotifications2016).

Sovelluksenhelppotestaaminennopeuttaakehitystäjavianetsintää.Cordovassavar-

sinkinnatiivientoimintojentestaaminenonhidasta,koskasevaatiisovelluksenkään-

tämistäjaasentamistaalustakohtaisillatyökaluilla.Laitteentuleemyösyleensäolla

kytkettytietokoneenUSB-liitäntään.Käyttöliittymääonmahdollistatestatasuoraan

työpöytäselaimessa.EsimerkiksiPhoneGapjaMonacatarjoavatkehittyneempiätes-

taustyökaluja.Molemmattukevattestaamistasuoraanlaitteellaverkonylijapysty-

vätpäivittämäänmuutoksettoteutukseenautomaattisesti.Myösennaltamäärätty-

jenlaajennustentestaaminenonmahdollistasuoraan.

Sovelluksenkääntäminenjajulkaiseminenuseallealustallevaatiinormaalistikehittä-

jältäpaljontyötäjakokemusta.Kullekinalustalleonomatkehitystyökalunsa,joiden

Page 10: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

7

käyttöönottojakäyttötuleeopetella.Tähänratkaisunaontarjollapalveluita,jotka

kääntävätetänävirtuaalikoneillasovelluksestajulkaisukelpoisenpaketin.Esimerkiksi

PhoneGapillajaMonacallaonomatpalvelunsa,joihinkehittäjäpystyylähettämään

projektinsapaketoitavaksi.

Lisäksiratkaisuvoitarjotaverkkopalveluitajarajapintojatiedonhallintaanjavälityk-

seen.EsimerkiksiMonacatarjoaapalveluitamuunmuassakäyttäjienhallintaansekä

push-viestienjasähköpostienlähettämiseenselainkäyttöliittymänkautta(Monaca

Backendn.d.).Tällöinkehittäjäeivälttämättätarvitsesovelluksentaustallelainkaan

omaapalvelinlogiikkaajatietokantaa.

2.4.2 PhoneGap

TähänprojektiinvalittiinpohjaratkaisuksiPhoneGap.PhoneGaponAdobentuote-

nimiCordovallesekäsitätukevilletyökaluillejapalveluille(Productsn.d.).Työkalui-

hinkuuluvatPhoneGapDesktopappjaPhoneGapDeveloperapp.Maksullisenapal-

velunaAdobetarjoaaPhoneGapBuild-palvelua.PhoneGapeiotakantaakäyttöliitty-

mäntoteutukseen,mikäolieduksitässätoteutuksessa.Markkinointiinsuunnatunso-

velluksenkäyttöliittymähaluttiinrakentaajaoptimoidaalustaalkaenitse.

PhoneGapDesktopappnopeuttaaprojektinperustamistajakehittämistäverrattuna

Cordovankomentorivityökaluihin.Senkäyttöliittymänkauttapystyyperustamaan

projektinjaajamaanpaikallistatestauspalvelinta.Testauspalvelinkäsitteleeauto-

maattisestimuutoksetlähdekoodiin,jolloinsovellustaeitarvitsejatkuvastikääntää

testaamistavarten.TestauspalvelimeenvoiyhdistäätyöpöytäselaimellataiPhone-

GapDeveloperappilla.

PhoneGapDeveloperapponmobiilisovellus,jokaonladattavissasovelluskauppojen

kauttaiOS-,Android-jaWindowsPhone-alustoille.Senavullavoiyhdistääjokojulki-

siinPhoneGap-demoihintaiyleisemminomaantestauspalvelimeenlähiverkossa.Yh-

distämisenjälkeenselataaautomaattisestimuutoksettestauspalvelimelta.Näinke-

hittäjäpystyynopeastitestaamaansovelluksensakäyttöliittymäänatiivissaympäris-

tössä.Testaussovelluseitueautomaattisestilaajennuksia,muttatukeeennaltamää-

rättyäjoukkoasuosittujalaajennuksia.Esimerkiksipush-viestejäpystyytestaamaan

Page 11: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

8

heti,kunilmantestaussovellustanevaativatalustakohtaisia,monivaiheisiasertifioin-

tejajarajapinta-avaimiasekäpalvelimen,jokahoitaaviestienlähettämisen.

PhoneGapBuildonmaksullinenpilvipalvelu,jokahoitaasovellustenjulkaisemisenja

paketoinninsovelluskauppojavartenkehittäjänpuolesta.PalvelutukeeiOS-,

Android-jaWindowsPhone-alustojasekäpitkältisamojaennaltamäärättyjälaajen-

nuksiakuinPhoneGapDeveloperapp.Normaalistijulkaiseminentapahtuualustakoh-

taisillakehitystyökaluilla,joistaosaonlisäksisaatavillavaintietyillekäyttöjärjestel-

mille.Palvelusiisyhtenäistääjanopeuttaajulkaisuprosessiavarsinkin,jossovellus

julkaistaanuseammallealustalle.

3 WordPressinREST-rajapinta

3.1 WordPress

WordPressonmaailmankäytetyinverkkosivustojensisällönhallintajärjestelmä.

W3TechsinseurannanmukaanWordPressinmarkkinaosuusoli58,5%sisällönhallin-

tajärjestelmienkeskenjakäyttöaste27,1%seurattujensivustojenkeskenmarras-

kuussa2016(ks.kuvio1).WordPressonavointalähdekoodiajailmainen,jasenkes-

keisiäominaisuuksiaovatyksinkertainenkäyttöliittymä,laajennettavuusyhteisönke-

hittämienlisäosienkauttajaautomaattisettietoturvapäivitykset.

Page 12: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

9

Kuvio1.Käytetyimmätsisällönhallintajärjestelmät(Usageofcontentmanagementsystemsforwebsites2016)

3.2 REST-rajapinta

3.2.1 Johdanto

RESTonverkossayleistynytmalli,jokatarjoaaverkkopalveluilleyhtenäisenjahelppo-

lukuisentavantoteuttaarajapintoja.Verkossarajapintamuodostuuhierarkkisistare-

surssilinkeistä(ks.luku3.2.2)jaHTTP-pohjaisistaoperaatioista(Glossary2015):

• GET-pyyntöhakeeyksittäisentietueentaijoukontietueita• PUT-pyyntökorvaayksittäisentietueentaijoukontietueita• POST-pyyntölisäätietueenjoukkoon• DELETE-pyyntöpoistaayksittäisentietueentaijoukontietueita

YleisestiREST-rajapintojenkanssakommunikaatiotapahtuuverkossajokoJSON-tai

XML-formaatissa.Mallieiotatähänkantaa,jayksittäinenrajapintavoitukeayhtätai

useampaaformaattia.WordPressinsisäänrakennetturajapintatukeeoletuksenaai-

noastaanJSON-formaattia.

Rajapintaonollutsisäänrakennettunajoulukuussa2015julkaistustaversiosta4.4läh-

tien(Mullenweg2015)jajositäennenerillisenälisäosana.Sisäänrakennettuversio2

tarjoaakehikonrajapinnoille,muttajulkisetpäätepisteetpitääottaakäyttöönjoko

0 10 20 30 40 50 60 70

Blogger

Magento

Drupal

Joomla

WordPress

Markkinaosuus(%) Käytössäsivustoilla(%)

Page 13: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

10

virallisellaWordPressRESTAPI(Version2)-lisäosallataitoteuttamallaomatpääte-

pisteetprojektintarpeidenmukaan.Lisäosatarjoaapääsynläheskaikkeensivuston

julkiseensisältöön,lukuunottamattametatietoja(ks.luku3.2.5).Nämävalmiitpää-

tepisteetpyrkivätolemaankaikenkattavia,minkäkääntöpuolenaomienpäätepistei-

dentoteutusvoiollatarpeentiedonsiirronjasuorituskyvynoptimoimiseksi.

Rajapintatukeemyöskirjautumista.Kirjautuneenkäyttäjännimissävoidaanhakea

myösjulkaisematontasisältöäsekäsuorittaaylläpitotoimenpiteitä.Tälleeikuiten-

kaanolluttarvettatässäprojektissa.

3.2.2 Rajapinnanrakenne

WordPressintarjoamarajapintaonvahvastiristiinlinkitettyjaitseäändokumentoiva.

Rajapinnanjuuripäätepisteestäosoitteessa/wp-json/onhaettavissakaikkirajapin-

nannimiavaruudetjaniidenmäärittelemätpäätepisteet,mukaanlukienkehittäjän

itselisäämät.

WordPressRESTAPI(Version2)-lisäosakäyttäänimiavaruutta/wp/v2.Senoudattaa

pitkältiWordPress-sivustonrakennetta:

• /types:sisältötyypit,oletuksenapost,pagejamedia• /statuses:sisältöjentilat,oletuksenapublishelijulkinen• /taxonomies:sisältöjentaksonomiat,oletuksenacategoryjapost_tag• /comments:käyttäjienkommentitsisällöille• /[slug]:tietynsisältötyypinsisällöttaitaksonomiantermitovathaettavissa

slug-nimillä

SlugonWordPressintermiverkko-osoitteissakäytettävilletunnisteille.Nevoivatsi-

sältäävainpieniäkirjaimiajatarvittaessaväliviivojasanojenvälissä.Esimerkiksisivus-

tonkaikkisivutonmahdollistahakeapäätepisteeltä/pages,eliosoitteesta/wp-

json/wp/v2/pages.

3.2.3 Sivustonrakenne

TässäprojektissaWordPressinsisältörakennettalaajennettiinomillasisältötyypeillä

jataksonomioilla.Määrittelemälläsisältörakenneasiakkaantarpeidenmukaansel-

Page 14: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

11

keyttääsekäsisällönhallintaaettärajapinnantoteutustajakäyttöä.Omatsisältötyy-

pitlisättiinsivustonerisisältöosioille:Galleria(gallery),Tuotteet(products)jaHisto-

ria(history).Galleriaavartenluotiinmedia-taksonomiamateriaalienluokitteluun.

Myössisäänrakennettujasisältötyyppejäkäytettiinniidensoveltuessatarkoitukseen.

Yksittäisiintekstisivuihinkäytettiinvalmistapage-sisältötyyppiä.Käyttämätönpost-

sisältötyyppipiilotettiinkokonaansisällönhallinnasta.

Uudetsisältötyypitjataksonomiatlisätäänluontivaiheessarajapinnalla/wp/v2-nimi-

avaruuteenantamallarekisteröintifunktiolleargumenttishow_in_restarvollatrue.

register_post_type('gallery', array( … 'show_in_rest' => true, 'rest_base' => 'gallery' ) ); register_taxonomy('media', array('gallery'), array( … 'show_in_rest' => true, 'rest_base' => 'medium' ) );

3.2.4 AdvancedCustomFields-laajennus

ProjektissakäytettiinkattavastiAdvancedCustomFields-laajennusta.ACF:navulla

sivustonylläpitäjäpystyylaajentamaanjajäsentelemäänsisällönhallintaauusillasi-

sältökentilläja-rakenteilla.Hyvinsuunniteltunasehelpottaaylläpitoajaeriyttääyllä-

pidettävänsisällönsenjulkisesta,visuaalisestaesittämistavasta.ACFtallentaakuiten-

kintiedotyhtenäisestiWordPressinmetatietoihin.Laajennuksenperusversioonil-

mainen,jasiitäonolemassapro-versio,jokatarjoaauseitahyödyllisiälisäominai-

suuksia.(Condon2016.)

KoskametatiedoteivätolesaatavillajulkistenREST-päätepisteidenkautta(ks.luku

3.2.5),ACF-tiedottuleejokohakeaitsetailisätäautomaattisestijulkisiinpäätepistei-

siinACFtoRESTAPI-laajennuksenavulla.

Page 15: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

12

ACFtoRESTAPIlisääautomaattisestiACF-sisällötosaksi/wp/v2-nimiavaruutta.Esi-

merkiksituoteartikkelintiedoistalöytyyacf-niminentietue,jonkaaltalöytyytuot-

teelleliitetytlisätiedot,kutenvalmistusaineetjaravintosisältö.Lisäosatarjoaamyös

oman/acf/v2-nimiavaruudenyksittäistentietojenhakemiseenjamuokkaamiseen.

3.2.5 Rajoitukset

REST-rajapinnanolennaisinrajoitusonmetatietojenkäsittelyssä.Julkistenpäätepis-

teidenkauttametatietoihineipääselainkaan,koskanevoivatjulkisensisällönlisäksi

sisältääylläpitäjienyksityisiäjasivustonsuojattujatietoja.Lisäksimetatiedotvoivat

sisältääserialisoituadataa,jonkakäsittelyonestettymyösteknisistäjatietotur-

vasyistä.(CommonProblems2016.)

Näitärajoituksiaonmahdollistakiertääharkitenvalmiillalaajennuksillajaitseteh-

dyilläpäätepisteillä.Jälkimmäisessävaihtoehdossahaettavattiedotonmyösmahdol-

listarajoittaatoteutuskohtaisesti.

4 Mobiilisovellus

4.1 Käyttöliittymä

4.1.1 Rakenne

Sovellukseensaatiinasiakkaaltarautalangatjagraafisetelementit.Mobiilisovelluk-

sissakäytetäänyleisestikiinteäälatauskuvaakäynnistyksenaikana,tässätapauksessa

käytettiintasaisenmustaakuvaa.Käynnistymisenjälkeenmustalletaustalleanimoi-

tiinlogo,käyttöliittymäelementitjaaloitusnäkymä.Sovellusalkaatilausosiosta,jossa

käyttäjävoiseuratavaihevaiheeltaohjeitatilaamiseen.Vaiheidenvälilläliikutaan

jokosivullepyyhkäisemällä,nuolipainikkeistataiotsikoistanapauttamalla.Valikko-

painikkeenkauttapääseemuihinsovelluksenosioihin:galleria,tuotteetjahistoria

(ks.kuvio2).

Page 16: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

13

Kuvio2.Sovelluksenkäyttöliittymä:tilausosiojavalikko

Galleria-osiossalistataanallekkainasiakkaanmarkkinointimateriaalia.Listaustavoi

rajatamediantyypinmukaan,esimerkiksiYouTube-videoihin,printtimainoksiintai

ulkomainoksiin.Galleriaonsovelluksenaktiivisinosio,sensisältöpäivittyysäännölli-

sestijakäyttäjilläonmahdollisuusjakaagallerianmateriaalia.Materiaalinohessa

näytetäänkäyttöjärjestelmängraafisenohjeistonmukainenjakopainike,jokaavaa

käyttöjärjestelmänjakotoiminnon(ks.luku4.5).

Tuotteetesitetäänpyyhkäisemällänavigoitavinatuotekortteina,samallarakenteella

kuintilausosionvaiheet.Historia-osiostalöytyyaikajanaasiakkaanbrändillemerkittä-

vistävuosista.Vuodetesitettiinjanallavisuaalisestisiten,ettänevuorottelevatjanan

vasemmallajaoikeallapuolella,lähtienalkuvuosistajapäättyennykyhetkeen.

4.1.2 ValitutHTML5-tekniikatjaJavaScript-kirjastot

SovelluksenkäyttöliittymätoteutettiinJavaScript-pohjaisesti,jottakaikkisenosa-alu-

eetolivatoptimoitavissajajottasesaatiinvaikuttamaanmahdollisimmannatiivilta.

KäyttöliittymäkirjastoksivalittiinRactive.js,jokasitoosisällönelidatanHTML-pohjiin,

joistakäyttöliittymäkoostuu(Harris2016).Tämätarkoittaa,ettämuutoksetsisältöön

päivittyvätautomaattisestikäyttöliittymäänjasovelluslogiikantarvitseehuolehtia

vaindatastatietämättämitäänsenesitystavasta.

Page 17: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

14

Lisäksikäyttöliittymänosa-alueidentoteutuksessakäytettiinRactiveatukeviaJa-

vaScript-kirjastoja.KosketusnäyttöjenkosketustenkäsittelyynkäytettiinHammer.js-

kirjastoa,jokamuuttaakosketusnäytöiltäsaatavandatanhelpostikäsiteltäviksita-

pahtumiksi,kutennapautuksiksijapyyhkäisyiksi.Hammer.jsonintegroituRactiveen

ractive-touch-laajennuksella(Cruz2015).Yleinenkäyttötapaussovelluksessaolisisäl-

lönvaihtaminenpyyhkäisemälläsivuille.TähänkäytettiinSlick-karusellikomponent-

tia,jokahoitaasivuttaissiirtymätsulavasti,skaalautuunäyttökoonmukaanjaonoh-

jattavissaJavaScriptilla(Wheeler2016).NäidenlisäksikäytettiinjQuery-yleiskirjastoa

viestintäänkomponenttienvälilläjapaikkaamaanosa-alueita,joihinedellämainitut

eivätsoveltuneetjajotkaolisivatolleettyöläämpiätoteuttaapelkälläJavaScriptilla.

Datansäilyttämiseenjakäyttäjienvalintojenmuistamiseenkäytettiinselaimiinsi-

säänrakennettuaLocalStorage-rajapintaa.

4.1.3 Ractive.js-käyttöliittymä

Ractive.js:lläkäyttöliittymänvoikoostaakomponentteina,jotkaliitetääntavalliseen

HTML-dokumenttiin.YksittäinenkomponenttikoostuuHTML-pohjasta,datastajata-

pahtumienkäsittelystä.TavallisenHTML:nlisäksiRactivenpohjissakäytetäänlaajen-

nettuamustache-syntaksiadatansitomiseensekäomiaattribuuttejatapahtumien

käsittelyynjasiirtymäanimaatioidenkiinnittämiseen(Harris2016).Yksinkertaisin

tapatoteuttaapohjaonsisällyttääseHTML-dokumenttiinscript-elementtinä,johon

voidaanviitataid-attribuutilla.

Page 18: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

15

<script id="order-template" type="text/ractive"> <main id="main" class="site-main swipe-navigation" role="main"> {{#each instructions}} <article id="order-{{index}}" class="step"> <div class="entry-content"> <h3>{{instruction}}</h3> {{#graphic}} <div class="graphic"><img class="wp-post-image" src="{{graphic}}" alt="" on-load="downsize" /></div> {{/graphic}} </div> </article> {{/each}} </main> <button on-tap="previousstep" class="previous-step step-ar-row"></button> <button on-tap="nextstep" class="next-step step-arrow"></but-ton> </script>

Kaikkimustache-tyylinensyntaksionkahdenaaltosulunsisässäjaensinvoitullaope-

raatio,jotaseuraaainamuuttuja.Esimerkkipohjassainstructionsontaulukko,jonka

jokaiselletietueelleluodaan#each-operaatiollaarticle-elementti.Mikälitietueellaon

kuvagraphic-muuttujassa,luodaansilleelementti#-operaatiolla,jokavastaaif-ehto-

lauseketta.Mikäliaaltosuluissaonainoastaanmuuttujailmanoperaatiota,muuttu-

jansisältötulostetaantekstinä.KolmellaaaltosulullaonmahdollistatulostaaHTML-

sisältöä.

Lisäksipohjassaonkäytettyon-load-jaon-tap-attribuuttejatapahtumienkiinnittämi-

seen.Attribuutinarvonaannetaantapahtumannimi,toisinkuinperinteisissäJa-

vaScript-attribuuteissa,joissaarvoonsuoritettavaaohjelmakoodia.Pohjaotetaan

käyttöönJavaScript-logiikassaluomallauusiRactive-instanssi.Allaolevassaesimerkki-

koodissaluodaaninstanssi,jolleannetaanargumenttinaaiemmanHTML-pohjanidja

idHTML-elementille,johoninstanssikiinnitetään.Viimeisenäargumenttinaannetaan

data-muuttuja,jokavälitetäänHTML-pohjalle.Muutoksetdata-muuttujaanpeilataan

Page 19: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

16

automaattisestipohjaan.Instanssinluomisenjälkeensiihenkiinnitetääntapahtumien

käsittelijätpohjassaannetuillanimillä.

app.view.order = new Ractive({ template: '#order-template', el: '#order-view', data: { instructions: [], } }); app.view.order.on('downsize', app.downsize); app.view.order.on('nextstep', app.nextstep); app.view.order.on('previousstep', app.previousstep);

Ractivesoveltuiprojektiinhyvin,koskaseolihelpposovittaaerilliseenlogiikkaanja

HTML-pohjiinpystyttiinhyödyntämäänWordPress-sivustonlähdekoodeja.Käyttä-

mälläRactiventap-tapahtumiaJavaScriptinclick-tapahtumiensijastapystyttiinmyös

kiertämäännoin300millisekunninviivetapahtumansuorittamisessa.Oletuksena

kosketusnäyttölaitteillaonselainpohjaisissatoteutuksissaviivettä,koskaselaimenpi-

tääodottaasuorittaakokäyttäjätuplanapautuksen.Sovelluksessaviiveenkiertämi-

nenonolennaista,koskaviivesaasovelluksenkäyttöliittymänvaikuttamaanlaiskalta.

4.2 Sovellusarkkitehtuuri

SovelluslähteeliikkeelleCordovanperusrakenteella.HTML-dokumentinlopussala-

dataanJavaScript-kirjastot:ensinCordovanoma,sittenkehittäjänvalitsematjalo-

puksikehittäjänomalogiikka.Näidenlatauduttuakiinnitetäänkäsittelijätkeskeisille

tapahtumille,kutenverkkoyhteydenmuutoksille,sovelluksensulkemisellejauudel-

leenavaamiselle.TässävaiheessaCordovanlaajennukseteivätolevieläkäytössäja

logiikantuleeodottaadeviceready-tapahtumaaCordovalta.

KunCordovaonladannutlaajennukset,voidaanvarsinainensovelluslogiikkakäynnis-

tää.Ensimmäisenäpyritäänalustamaansovelluksenvälimuistioffline-käyttöävarten

(ks.luku4.3),otetaankäyttöönpush-viestit(ks.luku4.4)jaluodaantilausosionkäyt-

töliittymäinstanssi.Seuraavaksikäyttöliittymällehaetaansisällötkeskitetyllärajapin-

tapyyntömetodilla.Metodihakeeensintilausosiondatanvälimuististajapalauttaa

senvälittömästicallback-metodille,jottakäyttöliittymäonhetikäytettävissä.Sitten

Page 20: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

17

metodivälittääpyynnönREST-rajapinnallejasaatuaanvastauksenpäivittäävälimuis-

tinjapalauttaapäivitetyndatan(ks.kuvio3).Dataviedäänkäyttöliittymäinstanssille,

jokapeilaamuutoksetautomaattisestikäyttöliittymään.

Kuvio3.Sovelluksenarkkitehtuuri

Käyttäjänvaihtaessaosiotasuoritetaansamaprosessikaikillelopuilleosiolleyhtäai-

kaa.Ajatuksenaoli,ettäyksihiemanpidempilataustarjoaaparemmankäyttökoke-

muksenkuinlataaminenjokaisenosionkohdalla.Osioilleluodaansiiskäyttöliitty-

mäinstanssitjahaetaansisällötrinnakkaisillarajapintapyynnöillä(ks.kuvio4).Lo-

giikkapitääkirjaasuoritetuistapyynnöistäjatekeevielätaustallatoimenpiteitä,kun

kaikkiinpyyntöihinonsaatuvastaus.

Mikälikäyttäjäonhyväksynytpush-viestit,tuleegalleriapäivityksistäilmoitus.Josso-

vellusonkäynnissä,niinnäytetäänilmoitussovelluksessa,muussatapauksessasenä-

kyykäyttöjärjestelmäntilarivillejamahdollisestilukitusnäkymässä.Joskäyttäjäavaa

ilmoituksen,avautuusovelluksengallerianäkymä,jossauusisisältöonnähtävissä.

Galleriassakäyttäjävoimyösjakaasisältöänatiivillajakodialogilla(ks.luku4.5).

Page 21: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

18

Kuvio4.Sovelluksenrajapintapyynnöt

4.3 Offline-käyttö

4.3.1 Johdanto

Sovelluksenkeskeisetsisällöttuliollakäytettävissämyösilmanverkkoyhteyttä.Tä-

häntarkoitukseentoteutettiinLocalStorage-pohjainenpaikallinentietokantajasynk-

ronointiprosessi,jokahoitaasäännöllisestimuuttuvansisällönpäivittymisen.

Lisäksisovellukseensisällytettiinsiemendataa,jollatietokantaalustetaan.Näinsovel-

luksentärkeimmätosiotovatkäytettävissä,vaikkeilaitteellaolisiensimmäiselläkäyn-

nistykselläverkkoyhteyttä.Jakäänteisestitärkeimmätkinosiotovatpäivitettävissä,

koskanekäyttävätalustettuatietokantaasensijaan,ettädataolisikiinteästiupotet-

tunalähdekoodiin.Alustaminentapahtuuensimmäiselläkäynnistyskerrallajatarvit-

taessasovelluspäivityksenjälkeen.

4.3.2 LocalStorage-tietokanta

LocalStorageonyksinkertainenlistaavain-arvo-parejajasoveltuuREST-rajapinnan

pyyntöjenpitkäaikaiseentallentamiseen.Avaimenatoimiirajapintapyynnönosoite,

jaarvoksitallennetaanJSON-muotoinenmerkkijono.NäinLocalStorageavoikäyttää

Page 22: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

19

saumattomastirajapintapyyntöjenvälimuistina,eikävarsinaisenlogiikantarvitsetie-

tää,saatiinkopyydettydatapalvelimeltavaisuoraanvälimuistista.

LocalStoragesoveltuukuitenkinvainrajallisellemäärälletietoa.Yhdensivustontai

sovelluksenkäyttämätilaonrajoitettu,pienimmillään5megatavuun.LisäksiLocal-

Storagensuorituskykyhuononeemerkittävästisuurillamäärillätietoa.Tällöinkan-

nattaaharkitalaajennustenkäyttöä,joillavoitallentaavapaastilaitteentiedostojär-

jestelmääntaiesimerkiksiLocalStorageatehokkaampaanSQLite-tietokantaan.

(Storage2016.)

TämänprojektintarpeisiinLocalStoragentilaontäysinriittävä,eikärajapinnanväli-

muistinakäyttövaadisuorituskykyynvaikuttaviatoimenpiteitä.Erirajapintapyyntöjä

onrajallisesti,eikäniidenmääräkasvaajanmyötä.JSON-merkkijonojenkäsittelyon

ainoakuormittavatoimenpide,muttasesuoritetaanrajapintapyynnöillevälimuisti-

ratkaisustariippumatta.

4.3.3 Online-synkronointi

Sovelluspyrkiipäivittämääntietokannantiedotjokaisellakäynnistyskerralla,joslait-

teellaonverkkoyhteys.Kaikkeatietoaeikuitenkaanpäivitetäkäynnistyksenyhtey-

dessä,vaantarpeenmukaan.Ainoastaanaloitusnäkymäntiedotpyritäänhakemaan

hetikäynnistyksessä.Muidenosioidentiedothaetaan,kunkäyttäjäsiirtyyniihinnavi-

gaationkautta.Näinsynkronointivaikuttaaminimaalisestisuorituskykyynaloitusnä-

kymässä.Muissaosioissataasvoiollahavaittavalatausviive,jokakuitenkinminimoi-

daankäyttämälläpaikallisentietokannantietojajosynkronoinninaikana.Tämäopti-

mointinoudattaamyösasiakkaanprioriteetteja:heillealoitusnäkymäontärkeinosio,

jamuusisältöonvainsitätukemassa.

Varsinainensynkronointiprosessionerittäinkevyt.Rajapinnaltaladataanvainmuu-

tamakilotavutietoaaloitusnäkymään,jakehitysvaiheessakaikkienosioidentiedon-

siirtoolialle20kilotavua.Siirtomääräänvaikuttaamerkittävästi,ettärajapintapalve-

limellaonkäytössäpyyntöjengzip-pakkaus.Pakkauspienentäämerkittävästiteksti-

muotoisentiedonsiirtoa,esimerkkitapauksessatiedonsiirtoolivain16%pakkaamat-

tomastadatasta.Synkronoinninlisäksiliikennettävoikuitenkintullakuvienjavideoi-

denlataamisestasivustoltajaulkopuolisiltatarjoajilta.

Page 23: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

20

4.4 Push-viestit

4.4.1 Johdanto

Sovelluksenkeskeinenominaisuusonvastaanottaapush-viestejäsisältöpäivityksistä.

Push-viestitarkoittaasovelluskohtaistailmoitusta,jokatuleekäyttäjänlaitteelleriip-

pumattasiitä,onkosovelluskäynnissä.Käyttäjämyöskontrolloi,mitäviestejähaluaa

vastaanottaa.Näistäsyistäviestiarkkitehtuurionuseimmitentoteutettukäyttöjärjes-

telmäntasollajaviestitkulkevatkeskitetynvälityspalvelunkautta.

4.4.2 Välityspalvelut

Välityspalvelutovatpitkältikäyttöjärjestelmäkohtaisia.iOS-järjestelmäänoninteg-

roituApplePushNotificationService(APNS)jaAndroidilleontällähetkelläGoogle

CloudMessaging(GCM)jasenvähitellenkorvaavaFirebaseCloudMessaging(FCM).

MolemmatGooglenpalvelutkuitenkintukevatmyösiOS-laitteillelähettämistävälit-

tämälläviestejäedelleenAPNS:lle.

4.4.3 Käyttöönotto

Koskaarkkitehtuurieioleaivanyksinkertainenjarajapintojaonuseita,onpush-vies-

teihintarjollalukuisialaajennuksiajakolmannenosapuolenpalveluita.PhoneGapilla

onviesteilleomalaajennusjatukiniidentestaamisellekehitystyökaluissa.Laajennus

hoitaaalustariippumattomastilaitteidenrekisteröinninvälityspalveluihinjaviestien

vastaanottamisen.WordPressilletaasonPushNotificationsforWordPress-laajen-

nus,jokahoitaakäyttäjätunnisteidentallentamisenjaviestienlähettämisenkäyttä-

jille.Kehittäjänvastuullejäävielävälityspalveluidenkäyttöönotto.

Välityspalvelutvaativatkäyttöönotossasovelluksenrekisteröimisen,jolloinkehittäjä

saapääsyoikeudenpalvelunrajapintaan.APNS:äävartentämävaatiisertifikaattitie-

dostonluomistajapush-oikeutuksenliittämistäsovelluksenprofiiliinApplenDevelo-

per-sivustolla(AddingCapabilities2016).Googlelletaasilmoitetaansovelluksentun-

nistejapalvelimenosoite,jotavastaansaadaanrajapinta-avainjasovelluskohtainen

tunniste(SetupaGCMClientApponAndroid2016).Sertifikaattijarajapinta-avain

tallennetaanWordPress-laajennuksenasetuksiinjasovelluskohtainentunnistePho-

neGap-laajennuksenasetuksiin.

Page 24: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

21

4.4.4 Käyttäjänrekisteröinti

Ensimmäiseksikäyttäjältäpyydetäänsovelluksessalupalähettääpush-viestejä,jol-

loinlaiterekisteröidäänsovelluksentunnisteellevälityspalvelussa.Sovellussaaväli-

tyspalvelultakäyttäjätunnisteen,jokatuleetallentaamyöhempääkäyttöävartenesi-

merkiksipalvelimentietokantaan(ks.kuvio5).

// Laajennuksen käyttöönotto ja lupakyselyn // esittäminen ensimmäisellä käyttökerralla var push = PushNotification.init({ "android": { "senderID": "453044274800", "icon": "notification" }, "ios": { "sound": true, "vibration": true, "badge": true }, "windows": {} }); // Laitteen rekisteröinti onnistui push.on('registration', function(data) { // data.registrationId sisältää laitteen tunnisteen, // joka lähetetään WordPress-laajennukselle talteen });

// Laitteen rekisteröinti epäonnistui, yleensä johtuen // virheellisistä asetuksista kehitysvaiheessa

push.on('error', function(e) { });

Page 25: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

22

Kuvio5.Käyttäjänrekisteröiminenpush-viestienvälityspalveluun

4.4.5 Käyttö

Kunkäyttäjillehalutaanvälittääviesti,selähetetäänsivustoltakäyttäjätunnisteiden

kanssavälityspalvelulle,jostakäyttäjänlaitesaaviestin.Joskäyttäjävalitseeviestin,

avaakäyttöjärjestelmävälityspalvelimellerekisteröidynsovelluksenjavälittääsille

viestiinkiinnitetyndatan(ks.kuvio6).

push.on('notification', function(data) { // Käyttäjä sai viestin ja aktivoi sen, // data sisältää tietoa WordPress-laajennukselta });

Page 26: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

23

Kuvio6.Push-viestienlähettäminen

4.5 Natiivijaot

Jakotoimintoavartenotettiinkäyttöönkolmannenosapuolensocialsharing-laajen-

nus.Sentoimintaperiaateonhyvinyksinkertainen:laajennuksellelähetetäänotsikko,

viestijajaettavatiedostottaiverkko-osoite,jolloinseavaakäyttöjärjestelmänjako-

dialoginjakäyttäjävoijakaasisällönmillätahansajakamistatukevallasovelluksel-

laan.Käytännössätoteutusvaatiikuitenkintasapainoiluakäyttöjärjestelmienjaso-

vellustenkäyttäytymisenmukaan.(Verbruggen2016.)

Sovelluksessajakotoimintokiinnitettiingalleriaosionkaikkienmateriaalienyhteyteen

(ks.kuvio7).Koskaotsikkotietoakäyttivätvainharvattestatuistajakosovelluksista,

eikävarsinaistapidempääviestiäollut,käytettiinotsikkonajaviestinäsamaatekstiä.

JosjaettavasisältöoliYouTube-video,niinlaajennuksellevietiinvideonverkko-osoite

url-muuttujassa.Useimmattestatuistasovelluksistaosasivatupottaavideonsuoraan

jakoontainäyttääesikatselun,jostaaukeaaYouTube-sovellus.Muissatapauksissavi-

deolinkkiaukeaavähintäänlaitteenselaimeen.Kuvientapauksessalaajennukselle

vietiinkuvanosoitefiles-taulukkoonjaurl-muuttujajätettiintyhjäksi.Testatutsovel-

luksetjakoivatkuvanluotettavastivain,josjakooneiliitettyerillistäjako-osoitetta.

Page 27: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

24

Tällöinkuvatulilähesainanäkyviinsuoraanjakoon,olipakyseessämultimediaviesti

taisosiaalisenmediankanava.

function share (event, subject, image, url) { if ('socialsharing' in window.plugins) { var options = { subject: subject, message: subject, url: url, files: null }; if (image) { options.files = [image]; } window.plugins.socialsharing.shareWithOptions(options); }

},

Kuvio7.KäyttöjärjestelmänjakodialogiAndroidilla

4.6 Seuranta

Sovelluksenasennustenseurantaonnistuusovelluskauppojenhallintapaneeleista,

joistanäkeeasennustenkokonaismääränjaaikajananasennuksistapäiväntarkkuu-

della.Tarkempaakäytönseurantaavartensovellukseenasennettiingoogle-analytics-

Page 28: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

25

laajennus.LisäksiharkittiinFacebook-laajennuksenjasenseurannankäyttämistä,

muttasilleeilopultakoettutarvetta.

SeurantaavartensovellustuleerekisteröidämobiilisovelluksenaGoogleAnalytic-

sissa.Käyttöönottoavartensaadaanvastaavatunniste(TrackingId)kuinverkkosivus-

tonseurantaan.Sovelluksenosioidenvälillänavigointiseurataansivulatauksinaja

kaikkimuuttoiminnottapahtumina.Tilausohjettaseurataantarkimmin,jottapysty-

täänmittaamaankäyttäjienkiinnostusta.Ensinmitataanaloittaakokäyttäjäohjeen

käytönsiirtymälläensimmäisestävaiheestaeteenpäin.Jokainenvaihekirjataanjär-

jestysnumeronmukaan,jottanähdäänkuinkapitkällekäyttäjätkeskimäärinselaavat

ohjettajakuinkamontaprosenttiajatkaaseuraaviinvaiheisiin.Joskäyttäjäseuraa

ohjettaloppuunsaakka,kirjataanselopuksiomanatapahtumaan.Tilausosionlisäksi

seurataankäyttäjänliikkumistatuotekorttienvälilläsekäpaljonkokäyttäjätjakavat

gallerianmateriaaliajamitämateriaaliajaetaaneniten.

TässäprojektissaFacebookinseurannastaluovuttiin,muttasillevoiollakäyttöäjat-

kossa.AnalyticsintapaansovellustuleerekisteröidäFacebook-sovellukseksi.Tämän

jälkeenlaajennusotetaankäyttöönFacebookinantamillatunnisteillajaseurannan

perusominaisuudettoimivatautomaattisesti.Facebookmittaasovelluksenasennus-

jakäynnistyskerratsekäkäyttäjiendemografiatietoja,kutensukupuoli-jaikäja-

kaumaa.Facebookpystyykeräämäändemografiatietoja,koskasesaatietoakäyttä-

jistään,josnäilläonsamallalaitteellaasennettunamyösFacebook-sovellus.Jatkossa

kerättyjätietojapystyykäyttämäänmyösmainostenkohdentamiseensovelluksen

käyttäjilleFacebookissa.

4.7 Muutlaajennukset

EdelläkäsiteltyjentoiminnallistenlaajennustenlisäksiCordovalleonlukuisiayleis-

hyödyllisiälaajennuksia.Network-information-laajennusseuraaverkontilaajailmoit-

taatilanmuutoksista.Sovelluksessasitäkäytetäänrajapintapyyntöjenyhteydessä

tarkkailemaan,onkokäyttäjäonline-tilassa.Mikäliverkkoyhteyttäeioletaisekat-

keaapyyntöjenvälissä,sovellusturvautuuoffline-välimuistiin.Device-laajennustun-

nistaalaitteenkäyttöjärjestelmänjaversion.Optimitilanteessasovelluslogiikkaeiole

Page 29: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

26

riippuvainenjärjestelmästä,muttalaajennuksestaonsiltihyötyä.Sovelluksessakäyt-

töjärjestelmätietoatarvitaanpush-viestienrekisteröintiinjalisäksisevietiinHTML-

dokumenttiinluokkana.HTML-luokanavullatyylejäpystyttiinhelpostikohdistamaan

järjestelmänmukaan,esimerkiksijakopainikkeissajärjestelmienomiajakosymbo-

leita.

iOS-alustalleasennettiinwkwebview-engine-laajennus,jokaottaakäyttöön8-version

mukanajulkaistunWKWebView-selainkomponentin.Cordovakäyttääyhäoletuksena

vanhaaUIWebView-komponenttia,jokaeioleenäätäysinajantasainen.Esimerkiksi

näkymiävierittäessävanhakomponenttipysäyttääkäyttöliittymänjavieritykseen

pystyttiinreagoimaanvastasenloputtua.Uudenkomponentinsaakäyttöönlaajen-

nuksella,muttatällähetkelläCordovanvirallisessalaajennuksessaonuseitahaas-

teita.SovelluksessakäytetäänIonicinjatkokehittämääversiota,jossauseimmathaas-

teetonratkaistu.(CordovaWKWebViewEngine2016.)

Näidenlisäksikäytössäolivatsplashscreen-jastatusbar-laajennukset.Kunkäyttöjär-

jestelmänkontrolloimalatauskuvakatoaahetisovelluksenkäynnistyttyä,

splashscreen-laajennusjatkaasennäyttämistäkäyttöliittymäelementtinäjakehittäjä

voiitsepiilottaasenalustettuaankäyttöliittymänjatoteuttaasulavammansiirtymän

sovellukseen.Statusbar-laajennuksellapystytäänkontrolloimaankäyttöjärjestelmän

tilarivinnäkyvyyttäsovelluksenkäytönaikana.

5 Tulokset

Projektissaasiakkaalletoteutettiinmobiilisovellusjasivustouudistus.Lopputulosvas-

tasiasiakkaanmäärittelyäjakaikkisuunnitelluttoiminnotsaatiintoteutettua.Projek-

tintyömääräpysyipitkällearvioidussa,muttaylittyihiemankommentointikierrosten

yhteydessä.Projektintekniseentoteutukseenarvioitiin25työpäivääjalopultasiihen

käytettiinnoin27,5työpäivää,mikäoli10%ylitysarvioidusta.Aikataulullisestipro-

jektieiollutkiireellinen,kirjoitusvaiheessatoteutusonluovutettuasiakkaallesisäl-

lönsyöttöävartenjaodottaajulkaisua.

Projektissatoteutettiinmyösuseitaratkaisuja,joitatoimeksiantajapystyyhyödyntä-

määnvastaavissaprojekteissa.Mobiilisovellukseentoteutettiinyleispäteväprosessi

Page 30: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

27

REST-rajapinnanhyödyntämiseen.Tekemällärajapintapyynnötkeskitetystijatallen-

tamallaneLocalStorage-pohjaiseenvälimuistiin,sovelluspystyikäyttämäänonline-

sisältöätehokkaastiriippumattaverkkoyhteydennopeudestataitilasta.Samoin

push-viestienkäsittelystätoteutettiinesimerkkiratkaisu.Sovelluksessaotettiinpush-

viestitkäyttöönkäyttäjänluvalla,rekisteröitiinkäyttäjänlaiteviestipalveluunjakäsi-

teltiinpush-viestinyhteydessäsaatuadataa.Lisäksisovellukseentoteutettiinpohja-

ratkaisutnatiivienjakotoimintojenkäyttämiseensekäsovelluksenkäytönseurantaan

GoogleAnalyticsilla.

MyösWordPressinsisällönhallintaantehtiinhyödynnettäviäratkaisuja,kutenREST-

rajapinnankäyttöönottojapush-viestilaajennuksenvalinta.Rajapinnankäyttöön-

otossaratkaistiinmyösomiensisältötyyppienjaACF-laajennuksellatehtyjentieto-

kenttienlisääminenrajapintaan.Valitunpush-viestilaajennuksenavullasisällönhal-

lintahoitaasekälaitetunnisteidenrekisteröinnin,ettäpush-viestienlähettämisen

saumattomastisisältöpäivityksienyhteydessä.

Kokonaisuudestasaatiinmyöstoimeksiantajallereferenssimyynninkäyttöön.Keski-

tetystiylläpidettävääsivusto-jamobiilisovelluskokonaisuuttaonhelppotarjotaasi-

akkaille.Tässävaiheessareferenssinperusteellaonsaatuyksitarjouspyyntövastaa-

vastatoteutuksesta.

6 Pohdinta

Opinnäytetyönkirjallisessaosuudessatarkasteltiinmobiilisovelluksenjasivustonra-

japinnantoteutusta.TyössäkäsiteltiinensinyleisestiApacheCordovaajaWordPres-

sinREST-rajapintaajasenjälkeenmobiilisovelluksenkeskeisiäominaisuuksia.

Cordovanohessatutustuttiinmyösmuutamaansiihenpohjautuvaankehitysratkai-

suunjaniidenhyötyihin.Ioniconerinomainenratkaisunatiivinkäyttöliittymänko-

koamiseen,muttaeitarjonnuttyökalujasovelluksentestaamisenlaitteilla.Monacaja

AdobePhoneGaptaaseivätotakantaakäyttöliittymäntoteutukseen,muttatarjosi-

vattestaustyökalujasekämaksullisialisäpalveluita.Monacallaolikattavammatpalve-

lut,joilleeikuitenkaantässäprojektissaolluttarvetta.Senpalveluidenavullaolisi

kuitenkinmahdollistatoteuttaavastaavasovellusilmanomaasivustoataustalla.Pro-

Page 31: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

28

jektinkehitykseenvalittiinPhoneGap,koskasentestaustyökalutolivaterittäinhelp-

pokäyttöisetjanatiivejatoimintoja,kutenpush-viestejäpystyttiintestaamaanlen-

nosta.

WordPressinsisäänrakennettuREST-rajapintaolivarsinhelppoottaakäyttöön.Asen-

tamallavirallinenlaajennussaatiinkäyttöönvalmiitpäätepisteet,jotkakattavatlähes

kaikenjulkisensisällön,myösomatsisältötyypit.Niidenlisäksiyhteisöonkehittänyt

runsaastilaajennuksia,jotkalaajentavatvalmiidenpäätepisteitämahdollisuuksia.

Valmiinratkaisunkattavuusolimyössenmahdollinenheikkous.Mikälisisältöäon

paljon,voiollatarpeentoteuttaaomatsuppeammatpäätepisteettiedonsiirronja

suorituskyvynoptimoimiseksi.

Sovelluksenarkkitehtuuristatulihyvinsuoraviivainenpääasiassavalittujenteknologi-

oidenyhteensopivuudenansiosta.SivustonREST-rajapinnaltaolihelppohakeatarvit-

tavatsisällötjarajapinnanJSON-muotoinendatapystyttiintallentamaankeskitetysti

offline-käyttöävartensovelluksenvälimuistiin.Datasaatiinvietyäsaumattomasti

käyttöliittymällekäyttämälläRactive.js:nHTML-pohjiajaautomaattistadatanpei-

lausta.Varsinaisessasovelluslogiikassapääpainopysyidatanjatapahtumienkäsitte-

lyssäsekävarsinaistenmääriteltyjentoimintojentoteutuksessa.

Vaikkeisovellustavieläjulkaistu,onjulkaisuprosessistaaikaisempaakokemustajaso-

velluskauppojakäytettiinsovelluksentestijakeluun.Sovellusontarkoitusjulkaista

ApplenAppStoreenjaGooglePlay-kauppaan.Aiemmissajulkaisuissahaastavintaon

ollutaikataulutus,koskapalveluntarjoajienhyväksyntäprosessitkestävätvaihtele-

vasti,eivätkävälttämättämeneläpiensimmäiselläyrityksellä.Sovellusonkuitenkin

jopäässytläpiApplenesihyväksynnästätestijakelunyhteydessä.Applenhyväksyntä-

ajatovatmyöslaskeneettänävuonnakeskimäärinallekolmeenvuorokauteen(iOS

AppStore-RollingAnnualTrendGraph2016).Googlenautomatisoitu

hyväksyntäprosessiviekokemuksenperusteellaallevuorokauden.

Uskoisin,ettäsovelluksenjulkaisutuleeonnistumaanilmansuurempiaongelmia.

Jokatapauksessaprojektionomaltaosaltaniauttanutsuoraviivaistamaanhybri-

disovellustenkehitystäjatuonuttietämystävaihtoehtoisistaratkaisuistajatyöka-

luistamyöstuleviinprojekteihin.

Page 32: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

29

Lähteet

AddingCapabilities.2016.ArtikkeliAppleDeveloper-sivustolla.Viitattu8.12.2016.https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html

AppStoreReviewGuidelines.N.d.ArtikkeliAppleDeveloper-sivustolla.Viitattu12.11.2016.https://developer.apple.com/app-store/review/guidelines/#minimum-functionality

CommonProblems.2016.ArtikkeliWPRESTAPI-sivustolla.Viitattu17.8.2016.http://v2.wp-api.org/guide/problems/

Condon,E.2016.AdvancedCustomFields.Viitattu17.8.2016.https://wordpress.org/plugins/advanced-custom-fields/

CordovaOverview.2016.ArtikkeliApacheCordova-sivustolla.Viitattu8.12.2016.https://cordova.apache.org/docs/en/latest/guide/overview/index.html

CordovaWKWebViewEngine.2016.ArtikkeliGithub-sivustolla.Viitattu6.12.2016:https://github.com/driftyco/cordova-plugin-wkwebview-engine

Cruz,R.S.2015.Ractive-touch.Viitattu8.12.2016.https://github.com/rstacruz/ractive-touch

Glossary.2015.ArtikkeliWPRESTAPI-sivustolla.Viitattu8.12.2016.http://v2.wp-api.org/glossary.html

Harris,R.2016.Mustaches.Viitattu8.12.2016.http://docs.ractivejs.org/latest/mustaches

Harris,R.2016.Ractive.js-Next-generationDOMmanipulation.Viitattu2.12.2016.https://github.com/ractivejs/ractive

IonicComponentDocumentation.N.d.ArtikkeliIonicFramework-sivustolla.Viitattu1.12.2016.http://ionicframework.com/docs/v2/components/

iOSAppStore-RollingAnnualTrendGraph.2016.TilastoAverageAppStoreReview

Times-sivustolta.Viitattu8.12.2016.http://appreviewtimes.com/ios/annual-trend-

graph

MonacaBackend.N.d.ArtikkeliMonaca-sivustolla.Viitattu6.12.2016.https://docs.monaca.io/en/manual/backend/

Mullenweg,M.2015.WordPress4.4“Clifford”.WordPress.org8.12.2015.Viitattu12.11.2016.https://wordpress.org/news/2015/12/clifford/

Page 33: WordPressin REST-rajapinnan käyttö Cordova ... · In addition to Cordova, PhoneGap development tools by Adobe were used. The tools enabled testing the app and its native features

30

PlatformSupport.2014.ArtikkeliApacheCordova-sivustolla.Viitattu17.8.2016.http://cordova.apache.org/docs/en/latest/guide/support/index.html

Products.N.d.ArtikkeliAdobePhoneGap-sivustolla.Viitattu17.8.2016.http://phonegap.com/products/

PushNotifications.2016.ArtikkeliAdobePhoneGap-sivustolla.Viitattu6.12.2016.http://docs.phonegap.com/tutorials/develop/push-notifications/

SetupaGCMClientApponAndroid.2016.ArtikkeliGoogleDevelopers-sivustolla.Viitattu8.12.2016.https://developers.google.com/cloud-messaging/android/client

Storage.2016.ArtikkeliApacheCordova-sivustolla.Viitattu20.11.2016.https://cordova.apache.org/docs/en/latest/cordova/storage/storage.html#localstorage

Usageofcontentmanagementsystemsforwebsites.2016.TilastoW3TechsWebTechnologySurveys-sivustolla.Viitattu20.11.2016.https://w3techs.com/technologies/overview/content_management/all

Verbruggen,E.2016.PhoneGapSocialSharingpluginforAndroid,iOSandWindowsPhone.Viitattu3.12.2016.https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin/

Wheeler,K.2016.Slick.Viitattu8.12.2016.https://github.com/kenwheeler/slick