développement d application mobile pour la messagerie: … · ainsi, kononi.com a décidé de...

34
Rapport de stage Présenté Par: Massa DICKO et Alpha DIALLO Encadreurs : Dr Jacqueline KONATE Mr Cheick KEITA LICENCE INFORMATIQUE Année universitaire : 2013-2014 Développement dune Application mobile pour la Messagerie: KONONI UNIVERSITE DES SCIENCES, DES TECHNIQUES ET DES TECHNOLOGIES DE BAMAKO (USTTB) §§§§§§§§§§§§§§§ FACULTE DES SCIENCES ET TECHNIQUES

Upload: trinhdat

Post on 08-Apr-2018

228 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

Rapport de stage

Preacutesenteacute Par Massa DICKO et Alpha DIALLO

Encadreurs

Dr Jacqueline KONATE

Mr Cheick KEITA

LICENCE INFORMATIQUE

Anneacutee universitaire 2013-2014

Deacuteveloppement drsquoune

Application mobile pour la

Messagerie KONONI

UNIVERSITE DES SCIENCES DES

TECHNIQUES ET DES TECHNOLOGIES

DE BAMAKO (USTTB)

sectsectsectsectsectsectsectsectsectsectsectsectsectsectsect

FACULTE DES SCIENCES ET

TECHNIQUES

2

Remerciements

Tous drsquoabord nous remercions infiniment le Bon Dieu de nous avoir donneacute la force

le courage et la patience tout au long de nos eacutetudes et surtout drsquoavoir mis sur

notre chemin des personnes exceptionnelles

Nous adressons un grand remerciement agrave Mr Cheick Keita ingeacutenieur reacutesidant aux

USA qui a proposeacute le sujet du stage et qui a assureacute son encadrement Nous lui

sommes tregraves reconnaissants pour son aide preacutecieuse et pour le temps qursquoil nous a

consacreacute lorsque nous en avions eu besoin

Un grand remerciement agrave Dr Sogoba Jacqueline Konateacute maicirctre-assistante agrave la FST-

USTTB de nous avoir choisis pour faire ce stage et drsquoavoir assureacute son co-

encadrement

Nous voulons eacutegalement remercier tous les professeurs de la faculteacute des sciences et

techniques qui nous ont formeacutes tout au long de notre parcours

Nous ne saurions terminer sans adresser nos chaleureuses salutations aux geacuteneacutereux

parents qui nous ont toujours encourageacutes et soutenus dans nos eacutetudes

3

Table de matiegraveres

Remerciements 2

I Contexte et probleacutematique 4

II Analyse des besoins et Architecture de lrsquoapplication 6 II1 Analyse des besoins 6 II2 Architecture 9

III Impleacutementation de lrsquoapplication 11 III1 Seacutelection drsquoun plugin 11 III2 Environnement de deacuteveloppement 12 III3 Etapes de Deacuteveloppement 16 III4 Mise en œuvre des fonctionnaliteacutes 18

III41 Creacuteation de compte et authentification 18 III42 Envoie de messages publics et groupeacutes 21 III43 Affichage de lrsquohistorique des messages 23 III44 Invitation agrave lrsquoabonnement aux messages publics 24

IV Outils et technologies utiliseacutes 25 IV1 NetBeans [5] 25 IV2 Langage java [6] 25 IV3 Git hub [7] 25 IV4 Trello [8] 26 IV5 Codename one [9] 26 IV6 Protocol http [10] 27 IV7 Skype [11] 27 IV8 Apache Tomcat [12] 27 IV9 JSON [13] 27

V Preacutesentation de lrsquoapplication 28

Conclusion et perspectives 33

Reacutefeacuterences 34

4

I Contexte et probleacutematique

Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de

communication de masse dans le monde Toutefois ces moyens ne sont pas

accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de

lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie

par rapport aux nombres de personnes recevant un message donneacute

La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de

communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux

masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre

une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de

peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]

Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees

en termes drsquoadoption du teacuteleacutephone portable

Avec une population de 15 millions drsquohabitants le Mali compte 10 millions

drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit

un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone

portable est le moyen de communication privileacutegieacute des populations maliennes et

est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels

teacuteleacutephoniques)

En plus de permettre les communications simples on pourrait imaginer une

solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave

une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre

utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout

simplement pour adresser un message agrave un grand nombre de destinataires le plus

rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour

acceacuteleacuterer la vulgarisation des communications de masse

Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute

lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit

prototype viablerdquo) ne concernait que les communications par SMS gracircce a un

numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole

de diffusion des eacutechanges entre utilisateurs

5

Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de

faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus

facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion

beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application

multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte

lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur

Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la

creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils

ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la

plateforme kononicom

Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication

sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee

dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section

IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la

conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section

6

II Analyse des besoins et Architecture de lrsquoapplication

II1 Analyse des besoins

Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue

essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre

quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne

Figure 1 Site de Kononi

Voici une description du protocole de communication mis en place par Kononi gracircce

aux SMS

a) Srsquoinscrire

Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte

Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit

drsquoenvoyer le SMS laquo +Fatoumata raquo

Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 2: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

2

Remerciements

Tous drsquoabord nous remercions infiniment le Bon Dieu de nous avoir donneacute la force

le courage et la patience tout au long de nos eacutetudes et surtout drsquoavoir mis sur

notre chemin des personnes exceptionnelles

Nous adressons un grand remerciement agrave Mr Cheick Keita ingeacutenieur reacutesidant aux

USA qui a proposeacute le sujet du stage et qui a assureacute son encadrement Nous lui

sommes tregraves reconnaissants pour son aide preacutecieuse et pour le temps qursquoil nous a

consacreacute lorsque nous en avions eu besoin

Un grand remerciement agrave Dr Sogoba Jacqueline Konateacute maicirctre-assistante agrave la FST-

USTTB de nous avoir choisis pour faire ce stage et drsquoavoir assureacute son co-

encadrement

Nous voulons eacutegalement remercier tous les professeurs de la faculteacute des sciences et

techniques qui nous ont formeacutes tout au long de notre parcours

Nous ne saurions terminer sans adresser nos chaleureuses salutations aux geacuteneacutereux

parents qui nous ont toujours encourageacutes et soutenus dans nos eacutetudes

3

Table de matiegraveres

Remerciements 2

I Contexte et probleacutematique 4

II Analyse des besoins et Architecture de lrsquoapplication 6 II1 Analyse des besoins 6 II2 Architecture 9

III Impleacutementation de lrsquoapplication 11 III1 Seacutelection drsquoun plugin 11 III2 Environnement de deacuteveloppement 12 III3 Etapes de Deacuteveloppement 16 III4 Mise en œuvre des fonctionnaliteacutes 18

III41 Creacuteation de compte et authentification 18 III42 Envoie de messages publics et groupeacutes 21 III43 Affichage de lrsquohistorique des messages 23 III44 Invitation agrave lrsquoabonnement aux messages publics 24

IV Outils et technologies utiliseacutes 25 IV1 NetBeans [5] 25 IV2 Langage java [6] 25 IV3 Git hub [7] 25 IV4 Trello [8] 26 IV5 Codename one [9] 26 IV6 Protocol http [10] 27 IV7 Skype [11] 27 IV8 Apache Tomcat [12] 27 IV9 JSON [13] 27

V Preacutesentation de lrsquoapplication 28

Conclusion et perspectives 33

Reacutefeacuterences 34

4

I Contexte et probleacutematique

Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de

communication de masse dans le monde Toutefois ces moyens ne sont pas

accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de

lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie

par rapport aux nombres de personnes recevant un message donneacute

La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de

communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux

masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre

une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de

peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]

Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees

en termes drsquoadoption du teacuteleacutephone portable

Avec une population de 15 millions drsquohabitants le Mali compte 10 millions

drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit

un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone

portable est le moyen de communication privileacutegieacute des populations maliennes et

est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels

teacuteleacutephoniques)

En plus de permettre les communications simples on pourrait imaginer une

solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave

une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre

utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout

simplement pour adresser un message agrave un grand nombre de destinataires le plus

rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour

acceacuteleacuterer la vulgarisation des communications de masse

Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute

lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit

prototype viablerdquo) ne concernait que les communications par SMS gracircce a un

numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole

de diffusion des eacutechanges entre utilisateurs

5

Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de

faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus

facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion

beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application

multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte

lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur

Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la

creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils

ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la

plateforme kononicom

Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication

sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee

dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section

IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la

conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section

6

II Analyse des besoins et Architecture de lrsquoapplication

II1 Analyse des besoins

Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue

essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre

quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne

Figure 1 Site de Kononi

Voici une description du protocole de communication mis en place par Kononi gracircce

aux SMS

a) Srsquoinscrire

Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte

Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit

drsquoenvoyer le SMS laquo +Fatoumata raquo

Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 3: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

3

Table de matiegraveres

Remerciements 2

I Contexte et probleacutematique 4

II Analyse des besoins et Architecture de lrsquoapplication 6 II1 Analyse des besoins 6 II2 Architecture 9

III Impleacutementation de lrsquoapplication 11 III1 Seacutelection drsquoun plugin 11 III2 Environnement de deacuteveloppement 12 III3 Etapes de Deacuteveloppement 16 III4 Mise en œuvre des fonctionnaliteacutes 18

III41 Creacuteation de compte et authentification 18 III42 Envoie de messages publics et groupeacutes 21 III43 Affichage de lrsquohistorique des messages 23 III44 Invitation agrave lrsquoabonnement aux messages publics 24

IV Outils et technologies utiliseacutes 25 IV1 NetBeans [5] 25 IV2 Langage java [6] 25 IV3 Git hub [7] 25 IV4 Trello [8] 26 IV5 Codename one [9] 26 IV6 Protocol http [10] 27 IV7 Skype [11] 27 IV8 Apache Tomcat [12] 27 IV9 JSON [13] 27

V Preacutesentation de lrsquoapplication 28

Conclusion et perspectives 33

Reacutefeacuterences 34

4

I Contexte et probleacutematique

Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de

communication de masse dans le monde Toutefois ces moyens ne sont pas

accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de

lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie

par rapport aux nombres de personnes recevant un message donneacute

La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de

communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux

masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre

une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de

peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]

Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees

en termes drsquoadoption du teacuteleacutephone portable

Avec une population de 15 millions drsquohabitants le Mali compte 10 millions

drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit

un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone

portable est le moyen de communication privileacutegieacute des populations maliennes et

est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels

teacuteleacutephoniques)

En plus de permettre les communications simples on pourrait imaginer une

solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave

une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre

utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout

simplement pour adresser un message agrave un grand nombre de destinataires le plus

rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour

acceacuteleacuterer la vulgarisation des communications de masse

Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute

lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit

prototype viablerdquo) ne concernait que les communications par SMS gracircce a un

numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole

de diffusion des eacutechanges entre utilisateurs

5

Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de

faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus

facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion

beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application

multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte

lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur

Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la

creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils

ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la

plateforme kononicom

Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication

sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee

dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section

IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la

conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section

6

II Analyse des besoins et Architecture de lrsquoapplication

II1 Analyse des besoins

Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue

essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre

quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne

Figure 1 Site de Kononi

Voici une description du protocole de communication mis en place par Kononi gracircce

aux SMS

a) Srsquoinscrire

Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte

Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit

drsquoenvoyer le SMS laquo +Fatoumata raquo

Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 4: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

4

I Contexte et probleacutematique

Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de

communication de masse dans le monde Toutefois ces moyens ne sont pas

accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de

lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie

par rapport aux nombres de personnes recevant un message donneacute

La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de

communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux

masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre

une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de

peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]

Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees

en termes drsquoadoption du teacuteleacutephone portable

Avec une population de 15 millions drsquohabitants le Mali compte 10 millions

drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit

un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone

portable est le moyen de communication privileacutegieacute des populations maliennes et

est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels

teacuteleacutephoniques)

En plus de permettre les communications simples on pourrait imaginer une

solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave

une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre

utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout

simplement pour adresser un message agrave un grand nombre de destinataires le plus

rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour

acceacuteleacuterer la vulgarisation des communications de masse

Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute

lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit

prototype viablerdquo) ne concernait que les communications par SMS gracircce a un

numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole

de diffusion des eacutechanges entre utilisateurs

5

Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de

faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus

facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion

beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application

multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte

lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur

Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la

creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils

ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la

plateforme kononicom

Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication

sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee

dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section

IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la

conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section

6

II Analyse des besoins et Architecture de lrsquoapplication

II1 Analyse des besoins

Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue

essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre

quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne

Figure 1 Site de Kononi

Voici une description du protocole de communication mis en place par Kononi gracircce

aux SMS

a) Srsquoinscrire

Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte

Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit

drsquoenvoyer le SMS laquo +Fatoumata raquo

Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 5: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

5

Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de

faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus

facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion

beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application

multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte

lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur

Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la

creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils

ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la

plateforme kononicom

Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication

sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee

dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section

IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la

conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section

6

II Analyse des besoins et Architecture de lrsquoapplication

II1 Analyse des besoins

Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue

essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre

quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne

Figure 1 Site de Kononi

Voici une description du protocole de communication mis en place par Kononi gracircce

aux SMS

a) Srsquoinscrire

Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte

Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit

drsquoenvoyer le SMS laquo +Fatoumata raquo

Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 6: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

6

II Analyse des besoins et Architecture de lrsquoapplication

II1 Analyse des besoins

Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue

essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre

quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne

Figure 1 Site de Kononi

Voici une description du protocole de communication mis en place par Kononi gracircce

aux SMS

a) Srsquoinscrire

Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte

Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit

drsquoenvoyer le SMS laquo +Fatoumata raquo

Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 7: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

7

Figure 2 inscription (avec MVP)

Figure 3 Message de confirmation (MVP)

b) Srsquoabonner

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 8: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

8

Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous

Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils

enverront Par exemple pour recevoir gratuitement les messages du compte News

envoyez le SMS laquo news raquo

c) Diffuser ses messages

Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous

pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme

message

Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira

de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser

d) Inviter ses amis

Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi

envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation

Exemple drsquoinvitation 66xxxxxx 77xxxxxx

Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les

numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo

e) Reacutepondre

Crsquoest facile de reacutepondre agrave un message sur Kononi

Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu

55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact

f) Se deacutesabonner

Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les

messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo

g) Se deacutesactiver

Pour ne plus recevoir de messages de Kononi envoyez le message STOP

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 9: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

9

Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les

mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des

ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le

MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute

entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre

eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application

mobile ou simple SMS)

Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute

eacutelaboreacutee

II2 Architecture

Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la

figure 4

Figure 4 architecture de lrsquoapplication

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 10: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

10

1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de

lrsquoutilisateur Lambda (poste client)

2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees

3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http

4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires

5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles

donneacutees par requecircte http

6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs

La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 11: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

11

III Impleacutementation de lrsquoapplication

Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et

lrsquoapproche adopteacutee agrave cet effet

III1 Seacutelection drsquoun plugin

Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le

deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des

teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME

preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que

lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de

la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette

technologie est relativement ancienne et tend agrave disparaicirctre

Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename

One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java

avec un seul et mecircme code des applications multiplateformes

Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement

commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry

OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la

possibiliteacute de deacutevelopper rapidement et facilement des applications

multiplateformes

Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement

Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute

comme suit

minus Une interface de programmation (API) ougrave on retrouve toutes les

bibliothegraveques Java et Codename One que lrsquoon peut utiliser

minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des

fenecirctres pour les applications

minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de

visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 12: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

12

gracircce agrave des skins (simulateurs des plateformes) et de tester le

fonctionnement de lrsquoapplication sur lrsquoIDE

minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le

Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le

reacutesultat de la construction sur son compte Codename One

III2 Environnement de deacuteveloppement

Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et

de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute

installeacute dans NetBeans puis le programme Git

Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous

rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo

Figure 5 Option plugin

Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 13: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

13

Figure 6 Ajout du plugin

Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename

One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]

Figure 7 Saisie de lrsquoURL du plugin

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 14: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

14

Figure 8 Seacutelection du plugin

Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo

Figure 9 Installation

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 15: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

15

Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective

Figure 10 Installation (suite)

La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez

lrsquoinstallation

Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet

de relancer NetBeans

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 16: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

16

Figure 11 Installation (fin)

III3 Etapes de Deacuteveloppement

La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication

depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave

lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 17: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

17

Figure 12 Phases de deacuteveloppement

Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un

compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel

pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur

fait des modifications sur le projet localement Lorsque des modifications sont

faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre

faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)

ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le

serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur

vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du

serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est

appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des

modifications des reacutepertoires personnels vers le reacutepertoire central

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 18: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

18

Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont

compileacutes

Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier

exeacutecutable

Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de

lrsquoapplication

1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de

fichier exeacutecutable

2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier

JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)

3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication

Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes

est deacutetailleacutee

III4 Mise en œuvre des fonctionnaliteacutes

III41 Creacuteation de compte et authentification

Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est

composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 19: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

19

Figure 13 Diagramme de seacutequences de lrsquoinscription

Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave

lrsquoutilisateur de saisir son nom et numeacutero

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 20: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

20

Figure 14 formulaire drsquoinscription

Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de

teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une

requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour

arguments deux variables contenant respectivement le nom et le numeacutero de

teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au

format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de

donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie

automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le

numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une

diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 21: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

21

dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui

signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche

Lrsquoutilisateur est donc inscrit agrave Kononi

III42 Envoie de messages publics et groupeacutes

Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute

a Message public

Un message public est un message que chaque utilisateur peut envoyer sur Kononi

sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous

les abonneacutes au compte de lrsquoutilisateur

Figure 15 Diagramme de seacutequences drsquoenvoi de message public

En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle

interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte

permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave

lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler

lrsquoopeacuteration

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 22: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

22

Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le

bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans

deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au

serveur

Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

dialogue contenant le code et le message drsquoerreur srsquoaffiche

b Message groupeacute

Un message de groupe est un message qursquoun utilisateur de Kononi envoie en

seacutelectionnant un groupe de contacts

Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe

Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle

interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte

et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps

du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton

laquo annuler raquo

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 23: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

23

Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton

laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton

laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave

envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees

comme paramegravetres de la requecircte envoyeacutee au serveur

Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un

message drsquoerreur srsquoaffiche

Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page

principale

III43 Affichage de lrsquohistorique des messages

Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de

Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur

avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON

(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur

Figure 17 Exemple de reacuteponse du serveur

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 24: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

24

Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer

(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements

suivants

bull Un label pour lrsquoimage

bull Un label pour le nom qui a envoyeacute le message

bull Un textArea pour le message

bull Un label pour la date

III44 Invitation agrave lrsquoabonnement aux messages publics

Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande

laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page

laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous

les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a

eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour

effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le

code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes

dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux

variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave

travers une exception

- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur

- Sinon la page principale est afficheacutee

La section suivante preacutesente les outils et technologies utiliseacutes pour

lrsquoimpleacutementation de lrsquoapplication

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 25: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

25

IV Outils et technologies utiliseacutes

Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies

suivants ont eacuteteacute utiliseacutes

IV1 NetBeans [5]

NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun

sous la licence CDDL (Common Development and Distribution License) et GPL

(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents

autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML

NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement

JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut

ecirctre senrichi par des plugins

Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute

drsquoutiliser Codename One Drsquoougrave le choix de cette IDE

IV2 Langage java [6]

Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute

par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa

principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves

facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents

Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux

IV3 Git hub [7]

Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le

programme Git Git Hub propose des comptes gratuits pour les projets de logiciels

libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute

par Linus Torvalds

Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi

servi agrave sauvegarder toutes les versions de lrsquoapplication

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 26: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

26

IV4 Trello [8]

Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est

baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les

cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre

Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version

de base est gratuite

Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs

lrsquoeacutetat davancement du projet

IV5 Codename one [9]

Figure 18 Logo et slogan de Codename One

Il permet de deacutevelopper en Java avec un seul et mecircme code des applications

multiplateformes Il nous a permis de creacuteer notre application

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 27: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

27

IV6 Protocol http [10]

Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-

serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche

application

Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local

IV7 Skype [11]

Outre les messages eacutelectroniques qui ont servi aux communications asynchrones

lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels

Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois

racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft

Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet

Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes

additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la

visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie

instantaneacutee et le partage drsquoeacutecrans

IV8 Apache Tomcat [12]

Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache

Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne

principalement sur les systegravemes drsquoexploitation UNIX et Windows

Apache Tomcat a permis de tester localement (au sein de NetBeans) le

comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur

Kononi

IV9 JSON [13]

Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de

donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre

repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir

repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de

programmation Il est notamment utiliseacute comme le langage de transport de

donneacutees par les services Web

JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 28: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

28

V Preacutesentation de lrsquoapplication

Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces

Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 29: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

29

Figure 21 Interface pour la reacutedaction drsquoun message

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 30: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

30

Figure 22 Interface message public Figure 23 Interface message groupeacute

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 31: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

31

Figure 24 Interface de contacts pour message groupeacute

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 32: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

32

Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 33: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

33

Conclusion et perspectives

Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune

plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones

portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de

servir de support de communication pour faciliter les conversations de groupes ou

la communication de masse Ses principales fonctionnaliteacutes sont linscription en

ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la

diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes

Cette application est similaire agrave des services existants tels que Twitter WhatsApp

et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de

diffusion pour les populations disposant drsquoun faible nombre de Smartphones et

drsquoun faible budget pour la communication (SMS)

La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons

mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave

distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et

de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux

outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener

un projet informatique de bout en bout

Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses

qursquooffrent les Technologies de lrsquoInformation et de la Communication

Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage

notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le

manque de documentations sur le plugin Codename One car qui est un plugin

relativement reacutecent

Dysfonctionnement du simulateur au cours de certains tests

Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints

Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait

prochainement permettre une utilisation sans la connexion Internet avec cette

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom

Page 34: Développement d Application mobile pour la Messagerie: … · Ainsi, kononi.com a décidé de créer une application multiplateforme pour téléphone mobile pour faciliter la création

34

application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des

besoins des utilisateurs

Reacutefeacuterences

1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-

dinternet-en-afrique-de-louest

2 httpwwwinnopifrencyclopedieadoptionhtm

3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml

4 httppluginsnetbeansorgplugin42406codename-one

5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-

8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-

Lambdas-Streams-et-Profiles

6 httpwwworaclecomtechnetworkjavaindexhtml

7 httpsgithubcom

8 httpstrellocom

9 httpwwwcodenameonecomdevelopershtml

9 wwwskypecom

10 httptomcatapacheorgdownload-70cgi

11 httpwwwjsonorg

12 httpkononicom

13 wwwdeveloppezcom