Gestor de notificacions h´ıbrid per a multiples´ … · tothom sap en qu`e consisteixen. La...

11
TFG EN ENGINYERIA INFORM ` ATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUT ` ONOMA DE BARCELONA (UAB), GENER 2017 1 Gestor de notificacions h´ ıbrid per a m´ ultiples aplicacions. Aleix Casanovas Pratdesaba, 1292776, UAB Abstract—Els dispositius m ` obils i les aplicacions formen part de la vida di` aria de les persones. Actualment, hi han una gran varietat de dispositius i aplicacions que permeten rebre notificacions push en qualsevol moment. L’enviament d’aquestes notificacions pot arribar a ser un mal de cap per una persona no t ` ecnica que ha de fer front a les aplicacions web dels prove¨ ıdors de notificacions push. Per tractar aquesta problem` atica, aquest treball presenta una soluci ´ o per enviar notificacions push duna forma ` agil i senzilla. A m´ es, la soluc´ o permet enviar aquestes notificacions push a multi-dispositius i multi-aplicacions a partir d’una API transparent i una aplicaci ´ o web per poder gestionar i enviar cada una de les notifiacions. Paraules clau—Notificaci ´ o Push, FCE, Android, iOS, aplicacions m` obils. Abstract—Mobile devices and applications are part of people’s daily lives. Currently, there are a great heterogeneity of devices and applications that need to be able to receive push notifications in every moment. Send this notifications could be a nightmare for individuals who have to deal with the notification providers. To address this issue, the present work presents a solution for sending push notifications. Furthermore, this solution will work with multi-devices and multi-applications, for that an API is developed together with a website for handle and send every single notification. Index Terms—Push notification, FCE, Android, iOS, mobile applications. 1 I NTRODUCCI ´ O T ENINT en compte l’` epoca en qu` e vivim, no ´ es d’extranyar que cada dia apareguin noves aplicacions m ` obils, que usen tecnologies i termes diferents de les que ven´ ıem coneixent. Un d’aquests termes s ´ on les notificacions push (tecnologia de tramesa autom` atica) [1]. Avui en dia tothom les utilitza i les veu a diari per` o no tothom sap en qu` e consisteixen. La tecnologia push ´ es una forma de comunicaci ´ o en la que una aplicaci ´ o servidor envia un missatge a un client-consumidor. ´ Es a dir, ´ es un missatge que un servidor envia a una persona avisant-lo de que t´ e una nova informaci ´ o. La caracter´ ıstica principal d’aquesta tecnologia ´ es que sempre ´ es el servidor qui inicia aquesta comunicaci ´ o, un E-mail: [email protected] Menci´ o: Tecnologies de la informaci´ o. Tutor: Jordi Duran Cals. Professor associat al DEiC. Febrer de 2017. Escola d’Enginyeria (UAB) altre aspecte clau ´ es la immediatesa d’aquesta tecnologia, donat que no fa falta estar executant l’aplicaci ´ o client perqu` e arribi la notificaci ´ o. Actualment podem trobar gran quantitat d’aplicacions m ` obils al mercat, moltes empre- ses tenen m´ es d’una aplicaci ´ o, en alguns casos desenes. Per aquest motiu el fet d’enviar les notificacions directament pel prove¨ ıdor de no- tificacions ´ es una gesti ´ o costosa i dif´ ıcil per una persona no t` ecnica, ja que en cas d’enviar una notificaci ´ o a varies aplicacions haur` a de can- viar de contexte en cada aplicaci ´ o. El projecte que s’ha desenvolupat pret` en resoldre aque- sta problem` atica tot centralitzant l’enviament i gesti ´ o de notificacions en un punt. L’objectiu principal d’aquest treball ha estat el de vestir un projecte per una empresa de not´ ıcies que t´ e varies aplicacions mobils segons les seves seccions editorials. En aquest cas, dues aplicacions:

Transcript of Gestor de notificacions h´ıbrid per a multiples´ … · tothom sap en qu`e consisteixen. La...

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 1

Gestor de notificacions hıbrid per a multiplesaplicacions.

Aleix Casanovas Pratdesaba, 1292776, UAB

Abstract—Els dispositius mobils i les aplicacions formen part de la vida diaria de les persones. Actualment, hi han unagran varietat de dispositius i aplicacions que permeten rebre notificacions push en qualsevol moment. L’enviamentd’aquestes notificacions pot arribar a ser un mal de cap per una persona no tecnica que ha de fer front a les aplicacionsweb dels proveıdors de notificacions push. Per tractar aquesta problematica, aquest treball presenta una solucio perenviar notificacions push duna forma agil i senzilla. A mes, la soluco permet enviar aquestes notificacions push amulti-dispositius i multi-aplicacions a partir d’una API transparent i una aplicacio web per poder gestionar i enviar cadauna de les notifiacions.

Paraules clau—Notificacio Push, FCE, Android, iOS, aplicacions mobils.

Abstract—Mobile devices and applications are part of people’s daily lives. Currently, there are a great heterogeneity ofdevices and applications that need to be able to receive push notifications in every moment. Send this notificationscould be a nightmare for individuals who have to deal with the notification providers. To address this issue, the presentwork presents a solution for sending push notifications. Furthermore, this solution will work with multi-devices andmulti-applications, for that an API is developed together with a website for handle and send every single notification.

Index Terms—Push notification, FCE, Android, iOS, mobile applications.

F

1 INTRODUCCIO

T ENINT en compte l’epoca en que vivim,no es d’extranyar que cada dia apareguin

noves aplicacions mobils, que usen tecnologiesi termes diferents de les que venıem coneixent.Un d’aquests termes son les notificacions push(tecnologia de tramesa automatica) [1]. Avui endia tothom les utilitza i les veu a diari pero notothom sap en que consisteixen. La tecnologiapush es una forma de comunicacio en la queuna aplicacio servidor envia un missatge a unclient-consumidor. Es a dir, es un missatge queun servidor envia a una persona avisant-lo deque te una nova informacio. La caracterısticaprincipal d’aquesta tecnologia es que sempre esel servidor qui inicia aquesta comunicacio, un

• E-mail: [email protected]• Mencio: Tecnologies de la informacio.• Tutor: Jordi Duran Cals. Professor associat al DEiC.

Febrer de 2017. Escola d’Enginyeria (UAB)

altre aspecte clau es la immediatesa d’aquestatecnologia, donat que no fa falta estar executantl’aplicacio client perque arribi la notificacio.

Actualment podem trobar gran quantitatd’aplicacions mobils al mercat, moltes empre-ses tenen mes d’una aplicacio, en alguns casosdesenes. Per aquest motiu el fet d’enviar lesnotificacions directament pel proveıdor de no-tificacions es una gestio costosa i difıcil per unapersona no tecnica, ja que en cas d’enviar unanotificacio a varies aplicacions haura de can-viar de contexte en cada aplicacio. El projecteque s’ha desenvolupat preten resoldre aque-sta problematica tot centralitzant l’enviament igestio de notificacions en un punt.

L’objectiu principal d’aquest treball ha estatel de vestir un projecte per una empresa denotıcies que te varies aplicacions mobils segonsles seves seccions editorials. En aquest cas, duesaplicacions:

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 2

• La primera aplicacio mobil desenvolu-pada permetra rebre les alertes mete-orologiques segons les provıncies deCatalunya en que l’usuari estigui sub-scrit.

• En la segona aplicacio mobil es rebranles alertes esportives segons les provin-cies de Catalunya en que l’usuari estiguisubscrit.

Per tant, en la solucio hi haura un gestorweb on els periodistes encarregats d’enviarles notificacions podran accedir i publicar unanova alerta meteorologica o esportiva (triantl’aplicacio on es vol enviar) i associar-la a unaprovıncia de Catalunya, aquesta alerta serarebuda pels usuaris en format de notificaciopush en els dispositius que tinguin installadal’aplicacio i estiguin subscrits a la provıncia.

1.1 Estructura de l’article

L’article es troba estructurat amb 7 seccions.Primerament s’exposa el projecte en el blocd’introduccio on tambe es troba descrit els ob-jectius i l’estat de l’art del projecte. Seguida-ment en el punt 2 hi han exposats els requi-sits sobre els quals s’han treballat. En el punt3 es troba la meteodologia utilitzada i coms’ha planificat el projecte. L’apartat 4 detallaja l’aplicacio i les diferents parts: arquitectura,API, base de dades, gestor web i aplicaciomobil. Tot seguit, en el punt 5 la descripcio mespurament tecnica del projecte amb el llistat delsmoduls mes rellevants i l’apartat referent a laseguretat. En el punt 6 es troben els resultatsque s’han obtingut a mes d’una explicacio sobrela posibles fallades que hi poden haver i com esresoldran i una seccio sobre com dimensionarla solucio. Per acabar en el punt 7 es troben lesconclusions del projecte.

1.2 Objectius

A continuacio es llisten els objectius del projecteen la taula 1:

TABLE 1: Llistat d’objectius del projecte

Objectius Prioritat

Analitzar l’estat de l’artles diferents eines iserveis d’enviament denotificacions push

Prioritari

Desenvolupar un gestor denotificacions web per donarservei a diverses aplicacions

Prioritari

Desenvolupar una API quegestionara les diferents noti-ficacions i sera l’encarregadad’interoperar amb el serveid’enviament de missatgespush escollit per fer els en-viaments

Prioritari

Desenvolupar diverses apli-cacions mobils per poder re-bre les corresponents notifi-cacions

Prioritari

Realitzar el projecte en eltemps especificat Crıtic

Sistemes de seguretat en elgestor Secundari

1.3 Estat de l’artConeixer l’estat de l’art de les tecnologiesd’enviament de notificacions push es vital al-hora d’abordar aquest projecte. Aixı doncs,en el moment de fer la tria del sistemad’enviament ens hem centrat en els tres prin-cipals sistemes de notificacions hıbrids (quefuncionen tant amb Android com iOS):

• Amazon SNS [6]• Google FCM/GCM [7]• Azure NH [8]

Entrant mes en detall aquests sistemes funcio-nen seguint el seguent esquema (Fig. 1):

Fig. 1: Sistemes de notificacio push

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 3

Aquest esquema ha estat clau alhora de de-cidir quin proveıdor fer servir. En el cas de lesnotificacions d’Android es directament el serveiGoogle FCM/GCM qui envia les notificacionsi en dispositius iOS el Apple APNS. El serveid’Apple APNS directament s’ha descartat alno tenir suport en dispositius Android. Pertant, els unics proveıdors interessants pel pro-jecte serien: Amazon SNS, Azure NH i GoogleFCM/GCM sent els dos primers en el casd’Android un servei mes per sobre que s’acabacomunicant amb el Google FCM/GCM. Pertant, tant per Amazon SNS com Azure NH al noaportar cap avantatge significatiu als objectiusdel treball realitzat se’ls ha descartat. Un altrefet diferencial es que tant Amazon SNS comAzure NH son serveis de pagament, mentreque en Google FCM/GCM el servei de notifi-cacions es totalment gratuıt [9], a mes GoogleFCM/GCM proporciona altres caracterıstiquestant gratuıtes com de pagament que no sonutilitzades en aquest projecte.

El projecte desenvolupat a part de fer usde les tecnologies d’enviament de notificacionspush, tambe emmagetzema les notificacions ipermet fer un enviament agil i senzill de cadanotificacio a multiples aplicacions. Amb aquestmateix proposit es troben gran quantitat de pro-jectes i empreses, com poden ser Kumulos, Car-nival, Urban Airship o Push Woosh. Aquestesquatre empreses ofereixen diferents funcionali-tats, per exemple, Kumulos i Carnival permetenenviar notificacions push de forma automaticaen funcio del comportament de l’usuari, a mesde gran quantitat d’analıtiques. Pel que fa Ur-ban Airship es centra mes en l’optimitzacioafegint filtres de localitzacio, plataforma i pref-erencies per tal d’enviar notificacions a un seg-ment d’usuaris mes concret. Totes elles pero sonde pagament i tenen la seva propia infraestruc-tura, de forma que en cas de utilitzar-les esdepen del seu servei i disponibilitat.

2 REQUISITS

Els requisits funcionals i no funcionals ques’han establert pel present treball son:

2.1 Requisits funcionals• R1: Un periodista ha de poder accedir

al sistema mitjancant un login i una pa-raula de pas.

• R2: Un periodista ha de poder veure unhistoric de les notificacions enviades.

• R3: Com ha director de l’empresa elsistema m’ha de permetre afegir novesaplicacions i provıncies (topics).

• R4: Els usuaris de l’aplicacio mobilhan de rebre les notificacions de lesprovıncies que esta subscrit.

• R5: Els usuaris de l’aplicacio mobil hande poder subscriure’s i desubscriure’s deles provincıes.

2.2 Requisits no funcionals• R6: Les interfıcies d’usuari del gestor i

l’aplicacito han de ser intuitius.• R7: L’usuari ha de rebre les notificacions

de forma instantania.• R8: Els periodistes han de poder nave-

gar pel gestor de forma rapida i sensed’errors.

• R9: El sistema ha de ser segur, cap per-sona aliena ha de poder enviar una noti-ficacio.

3 METEODOLOGIA

Per tal d’organitzar les diferents tasques i de-senvolupaments a realitzar s’ha fet servir lametodologia SCRUM. Com que nomes hi handues persones en el projecte (el projectista iel tutor), els rols es reperteixen de la seguentforma:

• El tutor del projecte ocupa el rol deProduct owner i Customer, indicant elsrequeriments que vol i prioritzant lestasques del backlog.

• El projectista te el rol de Scrum Mas-ter i Scrum Team, de forma que or-ganitza les tasques en el Kanban i pro-dueix els entregables del projecte. Perfer l’organitzacio de les tasques s’utilitzael metode Kanban, mes concretament elprogramari Trello que te la seguent rep-resentacio (Fig. 2):

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 4

Fig. 2: Kanban board

La gestio i control del codi font es trobadispositat en un repositori Git [4], concretamentBitbucket [5] de l’empresa Atlassian. Aquestprogramari online, permet crear respositorisgratuıts per equips de treball petits (fins a 5usuaris) i te un ampli reconeixement a nivellglobal. Aixı doncs, gracies a aquest programaris’han fent commits a mesura que es va desen-volupant les histories del sprint.

3.1 PlanificacioLes regles de SCRUM son la seguents:

• Sprints de 2 setmanes.• Una tasca no pot tenir un esforc superior

a dos setmanes.• L’esforc sera avaluat a partir de numeros

de la serie Fibonacci, a mes del 0.5 (Plan-ning poker [10]). On la historia mes grancom a molt pot tenir 13 punts d’esforc.Les valoracions seran fetes en base a laexperiencia de 4 anys com a enginyerinformatic.

El backlog esta compost per les seguentshistories, i s’han anat introduint a cadacomencament d’sprint. Juntament amb cadahistoria hi ha l’esforc associat. La planificacioaproximada per sprints es la seguent:

3.1.1 SPRINT I (16/09 - 30/09)• Informe inicial. - 5• Crear repositori git. - 0.5• Investigar i escollir com sera la APP. - 1• Construir el projecte base de la API a

partir del qual es comencara a desen-volupar la web fins a fer un ”hola mon”.- 1

• Investigar i escollir sistema per enviarles notificacions. - 1

• Investigar i escollir com sera el gestorwebsite. - 1

• Investigar i escolir llenguatge de progra-macio i la infraestructura digital de laAPI. - 1

• Investigar i escollir tipus de BBDD. - 1• Escollir metodologia de treball. - 0.5• Crear Tauler trello - 0.5

3.1.2 SPRINT II (02/10 - 14/10)• Definir proces de subscripcio. - 0.5• Definir proces de rebre notificacio push.

- 0.5• Desenvolupar proces de subscripcio. - 5• Definir model de la base de dades. - 1

3.1.3 SPRINT III (17/10 - 27/10)• Desenvolupar proces de rebre notificacio

push. - 5• Desenvolupar model de la base de

dades. - 3

3.1.4 SPRINT IV (31/10 - 11/11)• Informe de progres I. - 8

3.1.5 SPRINT V (14/10 - 25/11)• Desenvolupar gestor web. - 5

3.1.6 SPRINT VI (28/10 - 09/12)• Desenvolupar APP mobil. - 5

3.1.7 SPRINT VII (12/11 - 23/12)• Testing & QA - 8• Informe de progres II. - 8

3.1.8 SPRINT VIII (02/01 - 12/01)• Estudiar possibilitat d’incloure la gestio

de multiples aplicacions. - 5

3.1.9 SPRINT IX (02/01 - 13/01)• Informe final. - 8• Dossier del TFG. - 8

3.1.10 SPRINT X (16/01 - 26/01)• Presentacio TFG. - 8

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 5

3.2 Grafic ”Burn up”Es pot veure l’evolucio de l’esforc completat amesura que s’assolien els diferents ”sprints” enel seguent grafic (Fig. 3):

Fig. 3: ”Burn up chart”

4 APLICACIO

4.1 ArquitecturaPer definicio, perque el servidor enviı el mis-satge al client, aquest s’ha hagut de subscriurepreviament. Per tant, es capturara el Registrar-ion ID d’Android[3] o el Device Token d’iOS[4]i es guardara per poder identificar el disposi-tiu i enviar-li la notificacio push. es importantdistingir entre la tecnologia pull de la push. Ladiferencia cau en qui inicia la comunicacio. Enla tecnologia pull es el client que l’inicia mentreque en la push es el servidor. Un possible fluxper poder rebre una notificacio push seria elseguent (Fig. 4):

Fig. 4: Flux notificacio push

(1) Proces de subscripcio:

• 1.1 La aplicacio mobil envia una peticioal sistema d’enviament de missatgespush amb el Registration ID d’Androido el Device Token Id d’iOS.

• 1.2 El sistema d’enviament de missatgespush (per exemple: FCM, APNs, Ama-zon SNS, etc.) respon amb el token iden-tificatiu del dispositiu.

• 1.3 Aquest token es enviat a la APIjuntament amb les dades d’identificaciode l’aplicacio i dispositiu i del topicon es vol subscriure. Finalment, l’APIguardara la relacio de: aplicacio-dispositiu-token-topic a la base dedades.

(2) Proces d’enviament d’una notificaciopush:

• 2.1 S’introdueix una nova notificacio apartir d’una pagina web, que fa la perti-nent crida a la API.

• 2.2 L’API processa aquesta peticio i liindica al sistema d’enviament de missat-ges push a quins tokens (dispositius) o aquin topic ha d’enviar la notificacio.

• 2.3 El sistema d’enviament de missatgespush envia la notificacio a cada disposi-tiu o topic que l’API li ha ordenat.

4.2 Estructura de la base de dades

S’ha desenvolupat una base de dades relacionalMySQL per gestionar els usuaris del gestor webi per guardar les relacions de les aplicacionssubscrites a cada una de les provıncies (queestan descrites en el model com a topics) i elsseus tokens corresponents. Mes en detall es potveure l’estructura de la base de dades en laimatge (Fig. 5):

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 6

Fig. 5: Esctructura de la base de dades relacional

4.3 API

En la comunicacio entre el gestor web i elsistema d’enviament de notificacions push s’hadesenvolupat una API rest usant el llenguatgeNode.js [11] ja que es un llenguatge modernevent-driven [12] i asıncron. Fet que ens aju-dara a construir un sistema com el que volemfer. La infraestructura digital usada es express[13] ja que es un dels framworks Node.js mesreconeguts i madurs. Totes les funcionalitats del’API desenvolupada es troben en el seguentllistat:

• GET /apps - Llistat de totes les aplica-cions registrades al sistema

• GET /apps/:appId - Informacio d’unaaplicacio en concret

• GET /topics - Llistat de tots els topicsregistrats al sistema

• GET /topics/:topicId - Informacio d’untopic en concret

• GET /notifications - Llistat de totes lesnotificacions creades al sistema

• GET /notifications/:notificationId - In-formacio d’una notificacio en concret

• POST /register - Registre d’un dispositiu• POST /subscribe - Subscripcio d’un dis-

positiu a un topic• POST /unsubscribe - Desubscripcio

d’un dispositiu a un topic• GET /users/me - Obtencio de

l’informacio de l’usuari gestor delweb

• POST /users/session - Obtencio d’untoken de sesso pel gestor web

• POST /users - Creacio d’un usuari pelgestor web.

4.4 Gestor web

El gestor web s’ha desenvolupat usantl’infraestructura digital AngularJs desenvolu-pada amb Javascript. Mes en detall s’han re-alitzat les seguents pantalles on els periodistespodran accedir per tal de gestionar i crear tantaplicacions, provıncies (topics) i notificacions.Mes en concret el llistat de pantalles realitzadeses el seguent:

• Homepage amb les opcions per accediral gestor

• Pagina de login per accedir al gestor• Pagina de registre per crear un usuari• Llistat per veure l’historic de notifica-

cions• Pagina per crear una notificacio• Pagina detall d’una notificacio• Llistat per veure tots els topics introduits

al sistema• Pagina per crear un topic• Pagina detall d’un topic• Llistat per veure totes les aplicacions

introduıdes al sistema• Pagina per crear una aplicacio• Pagina detall d’una aplicacio

4.5 Aplicacio mobil

Donat que es vol crear una aplicacio senzillaque solament rebi les notificacions s’ha obtatper crear una aplicacio hibrida amb cordova[14]. Mes concretament, a nivell de tecnologiess’ha usat ionic2, aquest es un framework percrear aplicacions hıbirdes a partir d’angular2 icordova.

Per simplificar l’aplicacio s’ha creat sola-ment una pantalla per permetre a l’usuari sub-scriure’s als topics desitjats dels quals rebrales notificacions. Com que un dels requisitses fer un sistema multi plataforma s’han creatdues aplicacions, una on es rebran notificacionsesportives (Fig. 7) i una altre on es rebran lesalertes meteorologiques (Fig. 6).

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 7

Fig. 6: Icona de l’aplicacio d’alertes Meteo-rologiques

Fig. 7: Icona de l’aplicacio d’alertes esportives

5 DESCRIPCIO TECNICA

5.1 Moduls i llibreriesPer desenvolupar cada part del projecte s’ha fetus d’una gran quantitat de tecnologies agru-pades en tres grans blocs (API, Gestor web iAplicacio mobil). Per aquest motiu s’han hagutde prendre moltes decisions tecniques, les mesrellevants es troben justificades en els seguentsapartats:

5.1.1 API• Expressjs [13]: Infraestructura digi-

tal Open-Source per desenvolupar enNodejs

• FCM-push [15]: Modul Javascript queenvia les peticions al servidor de noti-ficacions Firebase (FCM).

• Mysql [16]: Tecnologia de base de dadesque s’utilitzara.

• Passport [17]: Infraestructura digitald’autenticacio per Nodejs.

• Sequelize [18]: Mapatge d’objectes rela-cional (ORM) per Nodejs que suportaPostgreSQL, MySQL, MariaDB, SQLite iMSSQL.

5.1.2 Gestor web• Angular [19]: Infraestructura digital en

Javascript per desenvolupar web-apps.• Bootstrap [20]: Llibreria que permet util-

itzar components HTML i CSS.

5.1.3 APP mobil• Ionic2 [22]: Infraestructura digital

basada amb Angular2 [21] per crearaplicacions de mobils hıbrides.

• Cordova [23]: Utilitat que permet lacompilacio d’una aplicacio web a mobil,tant per Android, iOS com Windowsphone.

5.2 SeguretatLes seguretat es un aspecte que s’ha tingut moltpresent en la realitzacio del projecte. Ja que elfet que una suplantacio d’identitat al enviaruna notificacio pot ser un punt molt crıtic. Aixıdoncs veiem que s’ha tractat amb especial curala seguretat en els seguents punts clau:

5.2.1 Acces al gestor web i APIPer poder accedir al gestor web i per tant,fer us de diferents peticions de la API esnecessari d’un token de sessio. Aquest token esobtingut a partir del formulari d’inici de sessioon es demana usuari i un mot de pas. En labase de dades no es guarda la contrasenya enclar, sino que es guarda un ”one way” hashamb l’algoritme pbkdf2 (de forma que no espot saber la contrasenya inicial), a mes se liaplica un ”salt” de 32bytes de forma que dosusuaris amb la mateixa contrasenya no tindranel mateix hash. Les crides de la API doncs,requereixen obligatoriament d’un token validper poder ser executades.

5.2.2 Comunicacions al sistema d’enviamentde notificacions push

• Comunicacio amb la API:La comunicacio entre el sistemad’enviament de notificacions push ila API es a partir de missatges HTTP(POST) aquests son autenticats a travesde la capcalera Authorization. Aquesta”autorization key” es generada pelpropi sistema d’enviament, en el nostrecas FCM, i per tant, es vital que siguiguardada de forma segura i nomes siguitransportada a traves de comunicacionssegures.

• Comunicacio amb els dispositius:

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 8

Per tal de rebre una notificacio els dis-positius s’utilitza el sistema estandardd’Android i iOS. Aquest es basa ambuna comunicacio TLS entre el disposi-tiu i el proveıdor de notificacions pushde la plataforma corresponent. Pero almoment de rebre una notificacio aquestas’envia en text clar per aixo es importantconeixer que els missatges poden ser in-terceptats i llegits per tercers i es impor-tant no posar informacio confidencial.En el nostre cas al ser un sistema pensatper noticies aquest no suposa un prob-lema, tot i aixı si es volgues seguretats’hauria de fer servir la notificacio pushcom un sistema de sincronitzacio. Deforma que al haver-hi un contingut nous’envia una notificacio push pero ”senseel contingut” i seria la propia aplicacioque s’encargaria de sincronitzar-se perrebre el nou contingut d’una altre formames segura.

6 RESULTATS

6.1 Evidencies

Al ser un projecte amb una finalitat moltconcreta, la millor forma de demostrar lesevidencies del desenvolupament fet es mostrarper sobre els diferents punts claus:

- Subscripcio per part d’un usuari a unaprovıncia (topic) a traves d’un dispositiu:

L’usuari es subscriu a una provıncia a partirde dues crides: una a la API indicant el tokeni la provıncia, i un altre directament al sistemade notificacions. La pantalla de subscripcio aprovıncies sera doncs com la seguent (Fig. 8):

Fig. 8: Pantalla de subscripcio a una provıncia(topic)

- Enviament d’una notificacio a traves delgestor per part d’un periodista:

En el gestor es pot crear una notificacio indi-cant l’aplicacio on es vol enviar i/o la provıncia(topic), com veiem en la seguent imatge s’hatriat tant l’aplicacio com el topic, de formaque nomes els usuaris que tinguin l’aplicaciod’alertes meteorologiques i estiguin subscrits ala provıncia Barcelona rebran la notificacio (Fig.9).

Fig. 9: Pantalla de creacio d’una notificacio

- L’usuari rep una notificacio al dispositiu:

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 9

El sistema d’enviaments de notificacio en-viara directament la notificacio als dispositius,un exemple de notificacio es pot veure en laseguent imatge (Fig. 10):

Fig. 10: Recepcio de la notificacio al dispositiu

6.2 Tolerancia a falladesEn cas que el sistema de notificacions pushestigui caigut o saturat el gestor i la API con-tinuaran funcionant. Per aconseguir-ho al crearuna notificacio al sistema primer s’inserta a labase de dades i la columna ”send” es posacom a ”false”, de forma que no fa res mesque insertar una fila a la base de dades. I perdarrera hi ha un ”cron” executant-se que vaenviant les notificacions de forma desatesa i uncop enviades les marca amb la columna send a”true”.

D’aquesta forma en cas que el sistemad’enviament estigui caigut o saturat les notifi-cacions es podran crear des del gestor i s’aniranapilant a la base de dades com a pendents perenviar i un cop es restebleixi el sistema de noti-ficacions push aquestes aniran sent enviades.

6.3 Infraestructura i dimensionament delHWPel que fa el HW que es necessita per prossaren marxa el projecte, es recomana una maquina

similar a la de per exemple la instancia d’usgeneral ”T2.medium” d’amazon per fer correrla API i el Amazon RDS ”db.m4.large” per labase de dades. Pel que fa a les aplicacions mo-bils no requereixen d’infraestructura ja que sondistribuıdes pels mercats d’aplicacions d’iOS iAndroid.

A mes, l’arquitectura desenvolupada pot serfacilment dimensionada gracies a la flexibilitatque se l’hi ha donat. Una forma facil de di-mensionar seria a partir de tecnologia Docker[24], ja que es podria encapsular l’API en con-tenidors docker i usant el servei de contenidorsd’amazon, Elastic compute Cloud (EC2) [25]a partir del qual es podrien dimensionar lesinstancies d’API segons la carrega del moment.Tot i aixı, faria falta introduir un ”job sched-uler”, com podria ser el node-cron [26] per tald’executar les tasques en background de formacoordinada amb cadascuna de les instanciesque es trobin corrent.

6.4 Llista de milloresL’execucio d’aquest treball ha complert amb elsobjectius marcats. Tot i aixı sempre es podenaplicar moltes millores, a continuacio es trobenllistades les mes interessants:

• Llistat d’analıtiques (nombred’enviaments, notificacions obertes,etc).

• Usuaris amb rols al gestor, de formaque una persona amb rol de ”Periodistaesportiu” nomes pot enviar notificacionsa l’aplicacio d’esports.

• Habilitar la possibilitat de programarl’enviament d’una notificacio a una de-terminada hora.

• Afegir propietats opcionals a les notifica-cions tals com: imatge relacionada ambla notificacio, icona de la notificacio, sode la notificacio, etc.

7 CONCLUSIONS

El sistema d’enviaments de notificacions pushes un sistema que ja esta molt integrat a la nos-tre vida i que diariament utilitzem sense donar-nos compte. Es doncs, un sistema ampliament

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 10

utilitzat i de formes molt diverses. Amb aquestprojecte s’ha pogut veure una de les possi-bles aplicacions basada en poder enviar no-tificacions push de forma agil i senzilla. Ames, gracies al sistema desenvolupat s’ha donatmolta mes flexibilitat al propi sistema de notifi-cacions push triat (FCM), ja que, al fet de teniruna base de dades propia amb els dispositiusregistrats pot fer que, en casos concrets, esvulgui enviar una notificacio a nomes algunsdispositius especıfics (per exemple tots els reg-istrats en data X). Una mica mes en profun-ditat ens trobem que el sistema desenvolupatpot permetre amb un cost de desenvolupamentmolt petit altres avantatges i funcionalitats queel propi sistema de notificacions (FCM) no ensdonava, com el de planificar una notificacio,gestionar les prioritats de les notificacions i en-viar dades extres com; icona, missatges desple-gables, temps de vida de la notificacio, array dedades, etc.. Per ultim, una de les altres avantat-ges que aporta la solucio es l’historic de noti-ficacions, aplicacions i provıncies (opics) en ungestor web corporatiu propi que no depen d’untercer i que, per tant, les dades generades estandirectament en la base de dades permetent ferqualsevol tipus de tractament a posteriori.

A nivell de desenvolupament del projectees pot dir que s’han complert els objectius mar-cats i el que es mes important, en el terminiestablert. Gracies a la meteodologia SCRUMutilitzada cada entregable que s’havia planifi-cat s’ha pogut entregar dins els terminis senseretrassos considerables.

Les major dificultat amb que s’han fet frontalhora de la realitzacio d’aquest projecte haestat la escassa documentacio que tenen moltesles tecnolgies utilitzades degut a que molteshan sortit en els darrers anys, aquesta dificultatpero no ha set tant com per suposar un ender-reriment en les entregues.

A nivell personal, la realitzacio d’aquestprojecte ha suposat un repte i alhoral’adquisicio de noves habilitats tant en l’ambitde les notificacions push, com en l’ambit degestio de projecte, organitzacio i planificacio.Tot i aixı, i per acabar les conclusions cal dirque les tecnologies utilitzades (com la majoriade tecnologies de l’ambit de les tecnologies

de l’informacio), encara estan en la fase demaduresa, fet que pot portar a que d’un dia perl’altre surtin al mercat noves tecnologies quemilloren i retiren les actuals.

REFERENCES

[1] Wikipedia, ”Push technology”, 22/09/2016. Disponibleen: https://en.wikipedia.org/wiki/Push_technology

[2] Wikipedia, ”Scrum”, 21/10/2016. Disponible en:https://en.wikipedia.org/wiki/Scrum\_(software\_development)

[3] Trello, Software per la gestio de tasques a modeKanban, 21/10/2016. Disponible en (Tauler privat,es requereix de permisos): https://trello.com/b/uPNMcoIR/tfg-gestor-notificacions

[4] Git, Software open source gratuıt per la gestio del codi font,21/10/2016. Disponible en: https://git-scm.com/

[5] Bitbucket, Software de repositoris git, 21/10/2016.Disponible en (Repositori privat, es requereix de permisos):https://bitbucket.org/aleiix24/tfg

[6] Amazon, ”Amazon Simple Notification Service (SNS)”,21/10/2016. Disponible en: https://aws.amazon.com/es/sns/

[7] Google FCM, ”Firebase Cloud Messaging”, 21/10/2016.Disponible en: https://firebase.google.com/docs/cloud-messaging/?hl=es

[8] Microsoft Azure NH, ”Notification Hubs docu-mentation”, 21/10/2016. Disponible en: https://azure.microsoft.com/en-us/documentation/services/notification-hubs/

[9] Google Firebase, ”Firebase Pricing”, 04/11/2016.Disponible en: https://firebase.google.com/pricing

[10] Wikipedia, ”Planning poker”, 26/09/2016. Disponibleen: https://en.wikipedia.org/wiki/Planning\_poker

[11] Wikipedia, ”Node.js”, 26/09/2016. Disponible en:https://en.wikipedia.org/wiki/Node.js

[12] Wikipedia, ”Event-driven programming”, 26/09/2016.Disponible en: https://en.wikipedia.org/wiki/Event-driven\_programming

[13] Expressjs website, 26/09/2016. Disponible en: https://expressjs.com/

[14] Cordova website, 26/09/2016. Disponible en: https://cordova.apache.org/

[15] Npm, ”FCM push”, 26/11/2016. Disponible en: https://www.npmjs.com/package/fcm-push

[16] Mysql website, 26/11/2016. Disponible en: http://www.mysql.com/

[17] Passport, ”Passport website”, 26/11/2016. Disponible en:http://passportjs.org/

[18] Sequelize, ”Sequelize docs website”, 26/11/2016.Disponible en: http://docs.sequelizejs.com/en/v3/

[19] Angular, ”Angular webiste”, 26/11/2016. Disponible en:https://angularjs.org/

[20] Bootstrap, ”Bootstrap website”, 26/11/2016. Disponibleen: http://getbootstrap.com/

[21] Angular, ”Angular 2 website”, 26/11/2016. Disponible en:https://angular.io/

[22] Ionic, ”Ionic website”, 26/11/2016. Disponible en:https://ionicframework.com/

TFG EN ENGINYERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSITAT AUTONOMA DE BARCELONA (UAB), GENER 2017 11

[23] Cordova, ”Cordova website”, 26/11/2016. Disponible en:https://cordova.apache.org/

[24] Docker, ”Docker webpage”, 07/01/2017. Disponible en:https://www.docker.com/

[25] Amazon, ”Amazon Elastic Compute Cloud EC2”,07/01/2017. Disponible en: https://aws.amazon.com/es/ec2/

[26] Npm, ”Node cron, simple cron-like task schedulerfor node.js”, 26/11/2016. Disponible en: https://www.npmjs.com/package/node-cron