prosljeĐivanje poruka na operacijskom sustavu … · slika 2, arhitektura operacijskog sustava...
Post on 17-May-2020
8 Views
Preview:
TRANSCRIPT
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.
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
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
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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
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.
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
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
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
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
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.
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.
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.
top related