PUSH palvelut mobiilikehityksessä: Android ja Windows phone 7 Pauli Kettunen
Esityksen rakenne 1. Taustaa 2. Push web-ohjelmoinnissa Comet Interaktiomallit 3. Push älypuhelinalustoilla Deacon pilvipalveluna Älypuhelinalustat 4. Pohdintaa
1. Taustaa (1/3) Mobiili push-viestintä perinteisesti: SMS Siinähän meillä on aito Push-teknologia! Ongelmia SMS on kömpelö kehittäjän kannalta, vaatii paljon infraa palvelun ylläpitäjältä Ei ole luontainen viestikanava älypuhelimille, tiedon linkitys puuttuu Operaattorit rahastavat viesteillä Dataverkot vapauttavat käyttäjät, ja palveluiden ja sovellusten kehittäjät operaattoreiden rahastuksesta -> viestien lähettämisen kustannus ei ole enää riippuvainen niiden määrästä
1. Taustaa (2/3) Perusongelma: Kuinka saada pävittynyt tieto mahdollisimman nopeasti perille? Asiakas -> Palvelin, Helppoa! Palvelin -> Asiakas,??? Push-viestejä tukevia protokollia Sähköposti SMTP Pikaviestimet XMPP Eivät ole ideaaleja mobiilikäyttöön Eivät ole mobiiliverkkoihin suunniteltuja -> virrankulutus voi olla melkoinen
1. Taustaa (3/3) Mobiilius tuo omat haasteensa yhteys katkeilee usein yhteys voi muuttua erilaiseksi (3G -> WLAN) resurssit rajalliset (laitteen akku, kaistan leveys ja latenssi) Kuinka minimoida virrankulutus? Push-viestiä tarvitaan kaikkialla missä tieto päivittyy nopeasti ja arvaamattomasti aika ja paikkasidonnaiset mobiilipalvelut Kuinka toteuttaa Push mobiililaitteeseen dataverkon välityksellä? Voitaisiinko mallia ottaa web-ohjelmoinnista?
2. Push web-ohjelmoinnissa (1/4) Comet yleisnimitys teknologioille/ohjelmointitekniikoille jotka mahdollistavat datan puskemisen web-palvelimelta selaimeen Mahdollistaa sivun sisällön päivittämisen reaaliaikaisesti ilman jatkuvaa sivun päivitystä, eli sivu ladataan vain kun sisältö oikeasti muuttuu Koostuu monesti yksinkertaisesta lisäpalvelimesta, ja selaimessa pyörivästä javascript asiakkaasta Esimerkki Meteor-serverillä toteutettuna: http://meteorserver.org/examples/angst/
2. Push web-ohjelmoinnissa (2/4) Interaktiomallit Jatkuva lähetys (streaming) Kuva: http://meteorserver.org/interaction-modes/ Yhteyden katkeilu on ongelmallista eikä siksi sovellu hyvin mobiiliympäristöön
2. Push web-ohjelmoinnissa (3/4) Polling Kuva: http://meteorserver.org/interaction-modes/ Vaatii jatkuvaa yhteydenmuodostamista joka syö paljon resursseja
2.Push web-ohjelmoinnissa (4/4) Long polling Kuva: http://meteorserver.org/interaction-modes/ Yhteyden katketessa voidaan muodostaa uusi yhteys Uusi yhteys tarvitsee muodostaa harvemmin kuin pollingissa Sopii parheiten mobiilikäyttöön Push Android-alustalle Deacon
3. Push älypuhelinalustoilla - Deacon Push Android-alustalle Deacon joka web-ohjelmoinnista tuttua Comet-menetelmää Ainut muutos selain -> mobiilialusta asiakasohjelma siis taustapalveluna Androidissa Avointalähdekoodia Hyvät puolet Saat itse toteuttaa palvelun ja palvelin on sinun hallussasi Toimii myös vanhemmilla Android-alustoilla Huonot puolet Sinun pitää itse toteuttaa palvelu ja ylläpitää palvelinta Samaa kanavaa ei voida jakaa Ei ole vielä valmis
3. Push älypuhelinalustoilla - pilvipalveluna (1/2) Nykyiset älyalustat kuitenkin tarjoavat omaa pilvipushpalveluaan. Sovelluksen kehittäjän ei tarvitse ottaa kantaa tekniseen toteutukseen eikä huolehtia siitä Kaikki sovellukset käyttävät samaa kanavaa, joka säästää resursseja
3. Push älypuhelinalustoilla - pilvipalveluna (2/2)
3. Push älypuhelinalustoilla - Android (1/2)
3. Mobiiliratkaisut - Android (2/2) Google Cloud to Device Messaging Framework Päätelaitteen täytyy olla vähintään Android 2.2 tai uudempi Vaatii Google-tilin palvelinsovellukselle Päätelaitteet rekisteröityvät sekä pilveen että palvelimelle Push-kanavan kautta välitetään lyhyitä viestejä ja/tai Intentejä, joihin päätelaitesovellus reagoi Rajoituksia: Viestin maksimikoko 1024 tavua Data lähetetään avain-arvo-pareina Rajoitettu viestien määrä
3. Mobiiliratkaisut - WP7 (1/2)
3. Mobiiliratkaisut - WP7 (2/2) Tarjotaan kolmenlaisia viestejä 1. Toast notification Viesti ilmestyy puhelimen yläpalkkiin Viestin painaminen siirtää käyttäjän sovellukseen 2. Raw notification Palvelimelta voidaan lähettää dataa sisältäviä viestejä avoimena olevaan sovellukseen Jos sovellus ei ole näkyvillä viestit hylätään 3. Tile notification Päivittää sovelluksen live tileä puhelimen päänäkymässä
Pohdintaa Toteuttaakko palvelu itse vai tyytyäkkö valmiiseen? Kumpi on luotettavampi alustan tukema pilvipalvelu vai itse ylläpidetty palvelin?