prosljeĐivanje poruka na operacijskom sustavu … · slika 2, arhitektura operacijskog sustava...

27
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br.3383 PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU ANDROID Ivan Šola Zagreb, lipanj 2013.

Upload: others

Post on 17-May-2020

5 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

ZAVRŠNI RAD br.3383

PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU ANDROID

Ivan Šola

Zagreb, lipanj 2013.

Page 2: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,
Page 3: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

Sadržaj

1. Uvod ................................................................................................................ 1

2. Tehnologija „push“ .......................................................................................... 2

2.1. Primjene tehnologije push ......................................................................... 3

3. Android ............................................................................................................ 4

3.1. Android Arhitektura.................................................................................... 4

3.1.1. Linux Kernel ........................................................................................ 5

3.1.2. Biblioteke ............................................................................................ 5

3.1.3. Android Runtime ................................................................................. 5

3.1.4. Aplikacijski okvir .................................................................................. 5

3.1.5. Aplikacije ............................................................................................ 5

3.2. Osnove Aplikacija ...................................................................................... 6

3.2.1. Komponente aplikacija ........................................................................ 6

3.2.2. Korištenje komponenti ........................................................................ 7

3.2.3. Manifest datoteka ............................................................................... 8

3.2.4. Aplikacijski resursi .............................................................................. 8

4. Google Cloud Messaging (GCM) .................................................................... 9

4.1. Arhitektura usluge GCM .......................................................................... 10

4.2. Minimalne funkcionalnosti Android aplikacije i aplikacijskog poslužitelja

potrebne za rad usluge GCM ............................................................................ 11

4.3. Tok rada usluge GCM ............................................................................. 12

4.3.1. Registracija mobilnog uređaja .......................................................... 13

4.3.2. Slanje poruke uređaju ....................................................................... 13

5. Postavljanje i pokretanje aplikacije ................................................................ 14

5.1. Postavljanje aplikacije ............................................................................. 14

Page 4: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

5.2. Otvaranje projekta aplikacije u Eclipse-u ................................................. 17

5.3. Rad s aplikacijom .................................................................................... 18

6. Zaključak ....................................................................................................... 21

7. Literatura ....................................................................................................... 22

8. Sažetak ......................................................................................................... 23

Page 5: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

1

1. Uvod

Tijekom razvoja tehnologija za prosljeđivanje podataka preko Interneta pojavio

se problem kada se treba proslijediti poruka na uređaj bez izričitog zahtjeva

klijenta, odnosno komunikaciju treba inicirati poslužitelj. Rješenje tog problema

ostvareno je putem push tehnologije. Tehnologija push omogućuje klijentu

pretplatu na podatke sa poslužitelja i prihvat podataka kada aplikacija nije aktivna.

Na operacijskom sustavu Android tehnologiju push implementirao je Google

putem GCM usluge (Google Cloud Messaging).

Cilj ovog rada je opisati koncept rada tehnologije push i njezine implementacije

u Androidu u obliku usluge GCM, objasniti strukturalne komponente programa za

Android operacijski sustav, te programski izvesti, objasniti rad i dati osnovne upute

za rukovanje rješenjem za prosljeđivanje kratkih tekstualnih poruka na uređaje sa

operacijskim sustavom Android.

Page 6: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

2

2. Tehnologija „push“

Standardan način komunikacije preko Interneta, u kojem zahtjev za prijenos

podataka zatražuje klijent/primatelj, zove se pull. Push, odnosno server push,

opisuje način asinkrone internetske komunikacije u kojoj je zahtjev za prijenosom

podataka zatražen od strane poslužitelja.

Komunikacija push funkcionira na principu da klijent šalje zahtjev za pretplatu i

nastavlja sa radom, a stvara poseban proces (engl. listener) koji „osluškuje“, tj.

čeka poruke poslužitelja. Poslužitelj šalje odgovor u nekom budućem trenutku

kada završi obradu zahtjeva ili kada mu npr. traženi podaci postanu dostupni.

Listener je zapravo poseban poslužiteljski proces koji mora biti aktivan i može

primati poruke.

Slika 1, usporedba push i pull komunikacije[7]

Za komunikaciju putem usluge Push potreban je prilagođeni softver i na

korisničkom i poslužiteljskom kraju. Korisnički program treba moći tražiti pretplate

na informacije, „osluškivati“ za nadolazeće poruke, te ih primati, spremati i

prikazivati. Poslužitelj mora imati program koji razumije i sprema zahtjeve i

pretplate od klijenata i koji može slati poruke klijentima.

Za razliku od komunikacije tehnologijom pull, tehnologija push nakon

registracije klijenta je jednosmjerna (poslužitelj automatski šalje poruke ako je

klijent dostupan bez potrebe za zahtjevom klijenta), u slučaju nedostupnosti

uređaja isporučuje poruke čim uređaj postane dostupan i ne zahtjeva nikakve

Page 7: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

3

zahtjeve za slanjem ili potvrde za primanje od strane klijenta. Prema tome, sa

direktnim i stalnim pristupom Internetu, uz pretpostavku da je primjenjiv na traženi

tip komunikacije, push funkcionira brže, zahtjeva manje mrežnih konekcija i manje

sudjelovanja korisnika od komunikacije tehnologijom pull. Idealan je za svu

komunikaciju kojoj je cilj što brže biti isporučena do klijenta.

2.1. Primjene tehnologije push

Tehnologija push je idealna za slanje hitnih poruka i obavijesti i važnih

upozorenja. Također, može se odlično primjeniti na novinarstvo: sustav pretplata

koji isporučuje novi sadržaj čim se postavi na Internet gdje korisnik kontrolira koje

tipove sadržaja želi primati. Mogla bi se koristiti i u svrhu približavanja Interneta

iskustvu radia i televizije: relativno pasivan medij koji dijeli informacije i zabavni

sadržaj ali je sposoban i brzo poslati hitne informacije.

Page 8: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

4

3. Android

Android je operacijski sustav baziran na operacijskom sustavu Linux koji je

dizajniran primarno za mobilne uređaje sa zaslonom osjetljivim na dodir poput

smartphone-a i tableta. Originalno ga je razvijao Android, Inc. kojeg je Google

financirao i kasnije kupio u 2005. Prvi uređaj sa androidom je prodan u listopadu

2008.

Android je open source i Google je distribuirao kod pod Apache licencom.

Open source kod i slobodno licenciranje dozvoljavaju slobodnu modifikaciju i

distribuciju softvera.

3.1. Android Arhitektura

Android arhitetktura sastoji se od slojeva. Svaki sloj je grupa nekoliko raličitih

programskih komponenti. Zajedno uključuju operacijski sustav, međusoftver, te

važne aplikacije. Svaki sloj u arhitekturi daje razne usluge sloju iznad.

Page 9: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

5

Slika 2, arhitektura operacijskog sustava Android[6]

Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

Aplikacijski okvir i Aplikacije

3.1.1. Linux Kernel

Linux Kernel je osnovni sloj. Cijeli Android operacijski sustav je građen na

Linux 2.6 Kernel-u sa nekim Google-ovim arhitekturnim promjenama. Linux je taj

koji obavlja funkcije s harverom i sadrži sve osnovne hardverske driver-e. Driver-i

su programi koji kontroliraju i komuniciraju sa hardverom. Android koristi Linux za

sve svoje osnovne funkcionalnosti poput upravljanja memorijom, procesima,

mrežama i sigurnosti.

3.1.2. Biblioteke

Idući sloj su Androidove bibilioteke. Ovaj sloj omogućava uređaju upravljanje

različitim tipovima podataka. Pisane su u c ili c++ programskom jeziku i specifične

su za određeni hardver.

3.1.3. Android Runtime

Android Runtime se sastoji od Dalvik virtualnog uređaja osnovnih Java

biblioteka. Dalvik virtualni uređaj je Java virtualni uređaj koji se koristi u Android

uređajima za pokretanje aplikacija i opzimiziran je za nisku procesorsku snagu i

nisko memorijska okruzenja. Osnovne Java biblioteke se razlikuju od Java SE i

ME biblioteka ali pružaju većinu funkcionalnosti definiranih u Java SE bibliotekama.

3.1.4. Aplikacijski okvir

Ovo su blokokvi sa kojima aplikacije imaju direktnu interakciju. Ovi programi

upravljaju osnovnim funkcijama telefona kao upravljanjem resursima i glasovnim

pozivima.

3.1.5. Aplikacije

Aplikacije su gornji sloj Android arhitekture i ovdje se nalaze same aplikacije. U

njemu dolaze neke aplikacije koje su instalirane na svakom uređaju. Moguće je

napisati aplikaciju koja će zamijeniti bilokoju drugu aplikaciju.

Page 10: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

6

3.2. Osnove Aplikacija

Android aplikacije napisane su u Java programskom jeziku. Android SDK alati

kompajliraju kod, skupa sa svim podatkovnim i resursnim datotekama, u Android

package, arhivu sa .apk ekstenzijom. Sav kod u jednoj .apk datoteci se smatra kao

jedna aplikacija i to je datoteka koju Android uređaji koriste za instalaciju aplikacije.

Kada se instaliraju na uređaj, svaka Android aplikacija živi zasebno:

Android operativni sustav je višekorisnički Linux sustav u kojoj svaka

aplikacija ima definiranog različitog korisnika.

Sistem svakoj aplikaciji dodjeljuje jedistven Linux korisnički identifikacijski

broj. Sistem postavlja dozvole za sve datoteke u aplikaciji tako da im samo

korisnički identifikacijski broj dodjeljen toj aplikaciji može pristupiti.

Svaki proces ima svoj virtualni uređaj pa kod svake aplikacije radi u izolaciji

od ostalih.

Svaka aplikacija pokreće vlastite Linux procese. Android pokreće proces

kad bilokoja od aplikacijskih kompeonenti treba biti pokrenuta i gasi kada

vise nije potrebna ili kad sistem treba osloboditi resurse.

3.2.1. Komponente aplikacija

Komponente aplikacija su osnovni građevni blokovi Android aplikacije.

Postoji 4 tipa komponenti. Svaka ima striktno definiranu ulogu i životni ciklus koji

definira kako se komponenta stvara i uništava. Kada sistem pokreće komponentu

on pokreće proces za tu aplikaciju i instancira klasu potrebnu za tu komponentu.

Jedinstven aspekt Android sistemskog dizajna je da bilokoja aplikacija

može pokrenuti komponente drugih aplikacija. Budući da aplikacije ne mogu

direktno pristupati drugim aplikacijama njihove komponente aktiviramo slanjem

poruke sistemu deklarirajući namjeru (intent) korištenja te komponente. Po

primitku sistem aktivira tu komponentu.

3.2.1.1. Aktivnosti

Aktivnost (activity) predstavlja jedan zaslon sa korisničkim sučeljem. Jedna

aplikacija može imati više aktivnosti koje zajedno rade kako bi stvorile dobro

korisničko iskustvo ali svaka je zasebna od ostalih.

Page 11: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

7

3.2.1.2. Usluge

Usluga (service) je komponenta koja radi u pozadini kako bi izvodila dugotrajne

operacije ili radila za udaljene procese. Usluga ne pruža korisničko sučelje.

3.2.1.3. Pružatelji sadržaja

Pružatelj sadržaja (content provider) upravlja sa zajedničkom skupinom

aplikacijskih podataka. Može se spremiti podatke u sistem podataka, bazu

podataka SQLite, na Internet ili na bilokoju drugu trajnu memorijsku lokaciju kojoj

aplikacija može pristupiti. Također su korisni za čitanje i pisanje podataka koji su

privatni aplikacijama.

3.2.1.4. Broadcast reciever

Broadcast reciever je komponenta koja odgovara na sistemske broadcast

najave. Puno broadcast-a dolaze iz sistema. Aplikacije također iniciraju broadcast-

e. Iako primatelji broadcast-a ne prikazuju korisničko sučelje, oni mogu stvoriti

obavijest u statusnoj traci kada se dogodi broadcast događaj. Najčešće je

broadcast reciever samo poveznik za druge komponente i radi minimalnu količinu

posla.

3.2.2. Korištenje komponenti

Tri od četiri tipa komponenti – aktivnosti, usluge i broadcast recieveri – su

aktivirani pomoću asinkrone poruke zvane intent. Intent-i spajaju individualne

komponente tijekom rada programa bez obzira pripada li komponenta toj aplikaciji

ili nekoj drugoj.

Intent se stvara sa Intent objektom koji definira poruku koja aktivira ili

specifičnu komponentu ili specifičan tip komponenti.

Za aktivnosti i usluge, intent definira akciju koja će se obaviti i može

specificirati URI podataka na kojima se obavlja. Kod broadcast recievera intent

definira obavijest koja se razašilje. Pružatelji sadržaja se ne aktiviraju pomoću

intent-a nego preko zahtjeva koji je poslan od ContentResolver-a. Content resolver

obavlja sve direktne transakcije sa pružateljem sadržaja tako da komponenta koja

obavlja transakcije sa pružateljem ne treba i umjesto toga zove metode na

ContentResolver objektu. Postoje posebne dodatne metode za aktiviranje svakog

tipa komponenti.

Page 12: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

8

3.2.3. Manifest datoteka

Prije nego što Android sistem može započeti aplikacijsku komponentu sistem

mora znati da komponenta postoji čitanjem aplikacijinog AndroidManifest.xml.

Aplikacija mora deklarirati sve svoje komponente u ovom fileu koji mora biti u root

direktoriju aplikacijskog projekta.

Osim deklariranja aplikacijskih komponenti, manifest radi još mnoge stvari

poput identificiranja korisničkih dozvola koje aplikacija treba, deklariranja

minimalne razine API-a koju aplikacija zahtjeva, deklariranja hardverskih i

softverskih alata koje aplikacija koristi, itd.

3.2.4. Aplikacijski resursi

Android aplikacija sadrži više nego samo kod, ona zahtjeva resurse koji su

odvojeni od izvornog koda poput slika, zvučnih datoteka i svega što se tiče

vizualne prezentacije aplikacije. Korištenje aplikacijskih resursa olakšava

mijenjanje raznih karakteristika aplikacije bez mijenjenja koda i omogućava

optimiziranje palikacije za razne uređajske konfiguracije. Za svaki resurs koji se

doda u Android projekt SDK definira jedinstven integer identifikacijski broj kojim

možemo referencirati resurs iz aplikacijskog koda ili iz ostalih resursa definiranih u

XML-u.

Page 13: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

9

4. Google Cloud Messaging (GCM)

Google Cloud Messaging (GCM) je bestplatna usluga koja omogućuje slanje

podataka sa internetskih poslužitelja do Andorid aplikacija na Android uređajima

preko Google GCM poslužitelja. GCM je prvi put prikazan 27.6.2012. GCM je

zamijenio beta verziju Android Cloud to Device Messaging (C2DM) usluge.

GCM također sadrži GCM Cloud Connection Server (GCM CCS) koji

omogućuje poslužiteljima komunikaciju sa Android uređajima uspostavljanjem

perzistentne TCP veze sa Google serverima koristeći XMPP protokol. Ovo

omogućuje klijentima slanje poruka poslužiteljima.

Obilježja usluge GCM:

Omogućuje neovisnim poslužiteljima slanje poruka prema Android

aplikacijama.

Android aplikacija na uređaju ne mora biti aktivna da bi primala poruke.

Sistem će probuditi Android aplikaciju preko Intent broadcast-a kada poruka

stigne dok god je aplikacija postavljena sa ispravnim

„broadcast“ primateljima i dozvolama.

Poslani podaci preko usluge GCM mogu biti kratke poruke koje

obavještavaju aplikaciju da postoje veći podaci koji se mogu preuzeti sa

poslužitelja, poruke koje traže od aplikacije da sinkronizira podatke sa

poslužiteljom (npr. sinkronizacija radi prijenosa novopridošle e-pošte) ili

mogu biti poruka koja sadrži do 4KB podataka što je idealno za aplikacije

koje šalju poruke u stvarnom vremenu.

Usluga GCM ne podržava nikakva ugrađena korisnička sučelja za

upravljanje podacima poruka. Ona samo prosljeđuje čiste primljene podatke

direktno Android aplikaciji koja ima punu kontrolu nad njima. Na primjer,

aplikacija može postaviti obavijest, pokazati programski definirano

korisničko sučelje ili sinkronizirati podatke.

Uređaj mora imati barem inačicu Androida 2.2 i imati aplikaciju Google Play

Store instaliranu ili emulator koji pokreće barem inačicu Android 2.2 sa

Google API-ima (engl. Application Programming Interface). Makar je

Page 14: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

10

potreban za rad aplikacije, nije potrebno pokretati aplikaciju kroz Google

Play Store.

Koristi postojeće veze za Google usluge. Potreban je aktivan Google

korisnički račun na uređaju osim za uređaje koji rade sa barem inačicom

Android 4.0.4.

4.1. Arhitektura usluge GCM

Arhitektura usluge GCM se sastoji od komponenti i akreditacija. Komponente

su fizički entiteti koji imaju ulogu u usluzi GCM. Akreditacije su identifikacijski

brojevi i tokeni koji se koriste u različitim stadijima uporabe usluge GCM kako bi

osigurale da su svi sudionici provjereno vjerodostojni i da poruke stižu na pravo

mjesto.

Komponente:

Mobilni uređaj: Mora podržavati barem inačicu Android 2.2 koja ima Google

Play Store instaliran i mora imati barem jedan aktivni Google korisnički

račun ako radi na inačici nižoj od Android 4.0.4. Alternativna opcija je

emulator koji pokreće barem Android 2.2 sa Google API-ima.

Aplikacijski poslužitelj: Aplikacijski poslužitelj koji programer postavlja kao

dio implementacije usluge GCM. Poslužitelj šalje podatke Android aplikacije

preko GCM poslužitelja.

GCM poslužitelji: Google poslužitelji koji primaju poruke od aplikacijskih

poslužitelja i šalju ih uređaju

Akreditacije:

Sender ID: Broj projekta koji se uzima iz API kontrolne ploče. Sender ID se

koristi u registracijskom procesu kako bi se identificirala Android aplikacija

koja smije slati poruke uređaju.

Application ID: Android aplikacija koja se prijavljuje za primanje poruka.

Android aplikacija se identificira putem imena package-a iz manifest-a. Ovo

osigurava da se poruke šalju pravilnoj Android aplikaciji.

Page 15: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

11

Registration ID: Identifikacijski broj koji definiraju GCM poslužitelji i daju

Android aplikaciji koji omogućuje primanje poruka. Kada Android aplikacija

ima registration ID, ona ga šalje aplikacijskom poslužitelju koji ju koristi

kako bi identificirao svaki uređaj koji se registrirao za primanje poruka za

određenu Android aplikaciju.

Google User Account: Kako bi usluga GCM radila, mobilni uređaj mora

imati bar jedan Google korisnički račun ako uređaj radi sa inačicom ispod

Android 4.0.4

Sender Auth Token: API ključ koji se sprema na aplikacijskom poslužitelju

koji daje aplikacijskom poslužitelju pristup Google uslugama. API ključ je

uključen u zaglavlje POST zahtjeva koji šalje poruke.

Notification Key: Dio značajki korisničkih obavijesti koji omogućava

preslikavanje između korisnika i instanci aplikacije pokrenutih na više

uređaja pod vlasništvom korisnika. Notification ključ je oznaka koju GCM

koristi kako bi poslao obavijesti svim uređajima čiji registration ID-i su

vezani za ključ.

Notification Key Name: Dio notifications usluge. Notification Key Name je

ime ili identifikator koji je jedinstven svakom korisniku. Koristi se kako bi se

mogli grupirati različiti registration ID-i jednog korisnika.

4.2. Minimalne funkcionalnosti Android aplikacije i aplikacijskog

poslužitelja potrebne za rad usluge GCM

Android aplikacija:

Otvorene dozvole Internetu, Google korisničkom računu, usluzi GCM za

registriranje primanje poruka i kreirana specifična dozvola koja limitira

primanje poruka na samo GCM aplikaciju, kao i definiranje reciever-a u

manifestu.

Implementirana registracija na GCM poslužitelj sa slanjem identifikacijskog

broja uređaja i identifikacijskog broja Android aplikacije prema GCM

poslužitelju

Implementirana registracija na aplikacijski poslužitelj slanjem registracijskog

korisničkog broja.

Page 16: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

12

Implementirano povlačenje registracije sa GCM poslužitelja i aplikacijskog

poslužitelja.

Implementirano slušanje za GCM porukama i njihova obrada

Aplikacijski poslužitelj:

Omogućen prihvat registracijskog identifikacijskog broja od klijenta

Omogućeno pohranjivanje registracijskih identifikacijskih brojeva (npr. u

bazu podataka)

Omogućeno slanje poruka na prema GCM poslužitelju s ciljem

prosljeđivanja prema klijentu

4.3. Tok rada usluge GCM

Slika 3, shema razmjene poruka u usluzi GCM

U ovom poglavlju opisan je tijek događaja od kada se Android aplikacija na

mobilnom uređaju registrira na poslužitelj do primanja poruka.

Page 17: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

13

4.3.1. Registracija mobilnog uređaja

Prvi put kada Android aplikacija treba koristiti uslugu, ona šalje registracijski

intent (com.google.android.c2dm.intent.REGISTER) GCM poslužitelju. Registracijski

intent sadrži identifikacijski broj pošiljatelja (uređaja) i identifikacijski broj Android

aplikacije. (događaj broj 1 na Slici 3.)

Ako je registracija uspješna, GCM poslužitelj razašilje intent koji daje Android

aplikaciji registracijski identifikacijski broj

(com.google.android.c2dm.intent.REGISTRATION). (događaj broj 2 na Slici 3.)

Android aplikacija sprema ovaj ID za kasniju upotrebu poput provjera je li

aplikacija već registrirana. Registracijski identifikacijski broj ostaje dok Android

aplikacija eksplicitno ne povuče registraciju ili ga Google poslužitelj obnovi.

Za završavanje registracije, android aplikacija šalje registracijski identifikacijski

broj aplikacijskom poslužitelju. (događaj broj 3 na Slici 3.)

Aplikacijski poslužitelj najčešće sprema registracijski identifikacijski broj u bazu

podataka. (događaj broj 4 na Slici 3.)

4.3.2. Slanje poruke uređaju

Kako bi poslao poruku klijentima, aplikacijski poslužitelju šalje poruku koja

sadrži registracijski identifikacijski broj uređaja GCM poslužiteljima. (događaj a na

Slici 3.)

Google poslužitelji stavljaju poruku u red čekanja i pohranjuju poruku u slučaju

da se ne može povezati sa uređajem.

Kada je veza sa uređajem (provjeravava se registracijski identifikacijski broj

uređaja) moguća Google poslužitelji šalju poruku uređaju. (događaj b na Slici 3.)

Na uređaju sistem razašilje poruku Android aplikaciji preko intent broadcast-a

sa pravilinim dozvolama kako bi samo GCM Android aplikacija dobila poruku.

Intent (com.google.android.c2dm.intent.RECEIVE) sadrži parove ključ/vrijednost izvađene

iz pristigle poruke. Primitak poruke budi Android aplikaciju koja nije morala ni biti

pokrenuta prije primanja poruke. Android aplikacija procesira poruku.

Page 18: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

14

5. Postavljanje i pokretanje aplikacije

U ovom poglavlju biti će objašnjeno što sve treba napraviti za uspješno

pokretanje GCM aplikacije priložene uz ovaj rad, upute za otvaranje projekta

aplikacije u razvojnom okruženju i upute za korištenje aplikacije

5.1. Postavljanje aplikacije

Za rad ove aplikacije potreban je bilo koji poslužitelj koji podržava PHP i

MySQL. Poslužiteljski server se stvarao na Windows operacijskom sustavu na

Wamp skupini programa pa je preporučljivo koristiti upravo njih i sve daljnje upute

biti će za rad s njima.

Prvo je potrebno postaviti bazu podataka i poslužitelj. Preuzmite instalacijsku

datoteku sa priloženog medija ili otići na http://www.wampserver.com/en/ i skinuti

datoteku koja odgovara sistemu na koji se instalira. Zatim pokrećete instalaciju i

slijedite standardne korake za instalaciju windows aplikacija s time da pamtite u

koji direktorij se instalira.

Slika 4, wamp instalacijska aplikacija

Page 19: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

15

Nakon instalacije trebate podesiti samu aplikaciju. U system trayu u donjem

desnom kutu ekrana pritisnite ikonu WAMPSERVER.

Slika 5, wamp aplikacija

Mišem pređite preko „Apache“ direktorija i u njemu odaberite „httpd.conf“.

Potražite „<Directory>“ i pri dnu toga bloka promijenite tekst uz riječ „Require“ u

„Require all granted“. Ovime omogućujete pristup poslužitelju i od izvan vaše

lokalne mreže.

Slika 6, wamp apache konfiguracijska datoteka

Page 20: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

16

Nakon toga opet otiđite na WAMPSERVER ikonu i u direktoriju „PHP\PHP

Extensions“ pritisnite na „php_curl“. Zatim otiđite na sistemu u PHP direktorij

(wamp\bin\php\php5.4.3), otvorite „php.ini“ i tražite „php_curl“. Na lijevoj strani

ispred „extension“ stoji znak „ ; “. Maknite ga kako bi odkomentirali liniju.

Slika 7, wamp php konfiguracijska datoteka

Iduće što trebate napraviti je sa priloženog medija ili na Internetu pronađite

popravljenu verziju php_curl.dll datoteke i stavite ju u „ext“ folder u PHP folderu na

sistemu (wamp\bin\php\php5.4.3\ext) budući da php_curl.dll koji dolazi sa

wampom daje neočekivane greške.

.

Slika 8, direktorij sa php ekstenzijama

Sada možete staviti datoteke iz direktorija „appserver“ s medija u „www“ folder

u „wamp“ folderu, stisnuti WAMPSERVER ikonu i pritisnuti „Restart all services“ i

zatim „Go online“ ako vam je potreban pristup i sa interneta.

Page 21: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

17

Drugi korak je instalacija aplikacije na mobilni uređaj. Prebacite priloženu

GCMAndroidApp.apk datoteku na uređaj i pokrenite je. Kada se pojavi prozor za

potvrdu instalacije pritisnite „Install“ i pričekajte da završi. Aplikaciju pokrećete kao

i svaku drugu Android aplikaciju, pritiskom na njezinu ikonu u aplikacijskom

izborniku.

5.2. Otvaranje projekta aplikacije u Eclipse-u

U ovom poglavlju objasniti će se otvaranje projekta aplikacije u razvojnom

okruženju Eclipse na operacijskom sustavu Windows. Uzmite instalacijski program

Eclipse-a sa medija priloženog uz rad i raspakirajte arhiv u prozivoljan direktorij na

vašem sistemu ili skinite sa http://www.eclipse.org/downloads/ verziju koja

odgovara vašem sistemu. Alterntativno možete sa

http://developer.android.com/sdk/index.html skinuti ADT bundle koji sadrži Eclipse

i Android SDK i preskocit nekoliko koraka. Za dovršavanje te instalacije slijedite

upute na stranici.

Prilikom prvog pokretanja Eclipse će tražiti da postavite radni prostor (engl.

workspace). Postavite ga u proizvoljni direktorij i zapamtite ga. Zatim u Eclipseu

odite na „File“ i odaberite „Import“ u padajućem izborniku. Odaberite „Existing

Android Code into Workspace“, pritisnite „Next“ i onda „Browse“ pa odaberite

GCMAndroid direktorij na mediju priloženom uz rad.

Slika 9, odabir radnog prostora u Eclipse platformi

Potrebno je i postaviti sve potrebne datoteke i programe vezane za Android i

GCM. Prvo uzmite sa priloženog medija ili skinite sa

http://developer.android.com/sdk/index.html i instalirajte SDK. Iduće što trebate je

u Eclipseu odabrati „Help“, pa „Install New Software“. Zatim stisnite „Add“ i u

prozoru koji se pojavio pod „Name“ upišite „ADT Plugin“ i pod URL https://dl-

ssl.google.com/android/eclipse/ i stisnite „OK“. U „Available Software“ prozoru

Page 22: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

18

odaberite „Developer Tools“ i stisnite „Next“. Do kraja instalacija ide standardno.

Kada završi, restartajte Eclipse.

Kada se Eclipse upali pokazati će vam se novi prozor i u njemu odaberite „Use

existing SDKs“. Otiđite do lokacije na koju ste instalirali Android SDK i stisnite

„Next“. Kad je to gotovo, odite u SDK Manager.exe i dobiti ćete prozor sa listom

komponenti za razvoj androida. Odaberite barem direktorij Tools, najnoviji API

kao i API 8 i 12, te „Google Cloud Messaging for Android Library i Google Play

Services iz „Extras“. Pritisnite Install packages i pričekajte da se skinu. Nakon toga

restartajte Eclipse. Kao zadnji korak stisnite desni klik an projekt, odite na

„Properties“, odaberite „Java Build path“, pa „Libraries“ i „Add External JARs“ i u

android-sdk\extras\google\google_play_services\libproject\google-play-

services_lib\libs direktoriju odaberite google_play_services.jar. Pritisnite OK i

aplikacija bi se sada trebala moći pokrenuti. Za pokretanje aplikacije priključite

Android mobilni uređaj ili postavite virtualni uređaj (više infromacija na

http://developer.android.com) i pritisnite „Run“. Odaberite željeni uređaj i aplikacija

će se pokrenuti.

5.3. Rad s aplikacijom

Kada se aplikacija pokrene vidjeti ćete prozor za unos imena i tipku za

registriranje. Unesite ime i pritisnite tipku.

Slika 10, početni prozor aplikacije

Page 23: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

19

Pojaviti će se novi prozor koji će vam se početi puniti statusnim porukama.

Kada stigne poruka „Registered on application server“ sve registracije su uspjele.

Sada možete i izaći iz aplikacije jer će vam se po dolasku nove poruke pojaviti

obavijest koju možete stisnuti za ulazak u aplikaciju. Za kraj rada sa aplikacijom

pobrišite aplikaciju sa uređaja. To će automatski povući registraciju sa GCM

poslužitelja.

Slika 11, aplikacija registrirana na servere

Za slanje poruka Android aplikaciji odite na

http://IP_ADRESA_SERVERA/gcm_server_php i tamo možete vidjeti sve

korisnike spojene na uslugu. Za poslati poruku nekome od njih samo upišite

poruku u odgovarajući prozor i stisnite tipku „Send“

Slika 12, web stranica za slanje GCM poruka

Page 24: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

20

Prilikom primanja poruke čuje se zvučni signal i vibracija i u obavijestima se

pojavljuje obavijest o primljenoj poruci. Pritiskom na obavijest mobitel ulazi u

aplikaciju i prikazuje sve poruke.

Slika 13, primljena poruka

Za provjeru rada baze podataka možete u bilokojem trenutku otići na

http://localhost/phpmyadmin/ na računalu na kojem je baza postavljena.

Slika 14, konzola za upravljanje bazom podataka

Page 25: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

21

6. Zaključak

Tehnologija push veoma je moćan alat za prosljeđivanje sadržaja. U usporedbi

sa pull komunikacijom, uz pretpostavku da je primjenjiva na tip komunikacije koju

želimo ostvariti, komunikacija push je brža, zahtjeva stvaranje manje mrežnih

konekcija, manje sudjelovanja korisnika za uspješnu dostavu informacija i

omogućuje korisniku pristup podacima čim su stavljeni na poslužitelj čak i kada

aplikacija nije upaljena. Model pretplate koji push podržava jako je pogodan za

prenošenje vijesti, upozorenja i multimedije i mogao bi biti vrlo uspješan u tim

poljima.

Tehnologija GCM na Androidu dobar je primjer mogućnosti tehnologije push.

Makar je količina podataka prenosiva u samoj GCM komunikaciji veoma limitirana,

dovoljna je za aplikacije koje razmjenjuju tekstualne poruke u stvarnom vremenu

(instant messenger-e) i može se koristiti kao signalizacija za veće aplikacije sa

masivnijim tipovima podataka poput multimedije. Također je veoma lako ostvariti

sinkronizirajuću ulogu za aplikacije poput upravljača e-mailom. S obzirom na sve

češće korištenje modela pretplate na sadržaj, poboljšanja mobilnih veza na

Internet i činjenice da se tehnologija nalazi na pametnim telefonima na kojima se

cijeni brzina dohvata novog sadržaja i što manji potreban napor korisnika, usluga

GCM bi potencijalno mogla biti veoma rasprostranjena tehnologija na Androidu.

Page 26: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

22

7. Literatura

[1] Google, Google Cloud Messaging for Android,

http://developer.android.com/google/gcm/index.html, pristup: 12.5.2013.

[2] Google, Getting Started | Android Developers,

http://developer.android.com/training/index.html l, pristup 12.5.2013.

[3] Wikipedia, Google Cloud Messaging,

http://en.wikipedia.org/wiki/Google_Cloud_Messaging, pristup 6.6.2013.

[4] Wikipedia, Android Cloud to Device Messaging Service,

http://en.wikipedia.org/wiki/C2dm, pristup 6.6.2013.

[5] Wikipedia, Android (operating system),

http://en.wikipedia.org/wiki/Android_%28operating_system%29, pristup 7.6.2013.

[6] Google, Android Architecture – The Key Concepts of Android OS,

http://www.android-app-market.com/android-architecture.html, pristup 7.6.2013.

[7] FER-ZTEL, Višemedijske usluge - 2. Arhitekture višemedijskih

komunikacijskih sustava. Modeli komunikacije u raspodijeljenoj okolini. ,

http://www.fer.unizg.hr/_download/repository/VU-2013-

02_ArhVmKomSustava_notes.pdf, pristup 7.6.2013.

Page 27: PROSLJEĐIVANJE PORUKA NA OPERACIJSKOM SUSTAVU … · Slika 2, arhitektura operacijskog sustava Android[6] Slojevi Android arhitekture su: Linux Kernel, Biblioteke, Android Runtime,

23

8. Sažetak

Ovaj rad obrađuje temu komunikacije push tehnologijom, odnosno njezinom

implementacijom na operacijskom sustavu Android – uslugom GCM. Objašnjeni

su tehnologija „push“, osnove arhitekture OS Android i njegovih aplikacija, usluga

GCM i njezina arhitektura, tok rada i potrebne komponente za izradu aplikacija, te

je programski izveden jednostavan primjer prosljeđivanja poruka od aplikacijskog

poslužitelja preko usluge GCM do mobilnog uređaja. Navedene su i upute za

uspješno pokretanje i rukovanje aplikacijom. Aplikacija je izvedena u

programskom jeziku Java kao i sve Android aplikacije, a za izvedbu se koristila

razvojna platforma Eclipse i skupina aplikacija wamp.

The subject of this theses is push technology, specifically it's impementation on

the operating system Android – the GCM service. Explanations have been given

for the push technology, as well as the basics of Android's architecture and

applications, GCM's architecture, common app lifecycle and the necessary

components for implementation and an application that implements a simple

messaging service from the 3rd-party-server to the Android application using the

GCM service. There is also a short manual for setting up and running the

application. The application was written in the Java language as are all Android

apps. For it's development, the Eclipse devopment platform and wamp application

platform have been used.