L'application (enfin, si on peut appeler ça une application...) a été publié sur le Play Store
Nous avons réalisé plusieurs services pour faciliter le développement de notre application :
AuthServicepour la gestion du compte utilisateurAESCryptoServiceetRSACryptoServicepour la gestion du chiffrementDiscussionServicepour la gestion des discussionsUserServicepour la gestion des utilisateurs (par exemple la partie contact)Preferencespour la gestion des SharedPreferences (ce qui nous permet de réaliser un stockage local des données liées à notre application)DatabaseServicepour la gestion de Firebase (récupération de notre instance FB)
- Pour réaliser le splashscreeen, nous avons étendu
Threadpour pouvoir lancer automatiquement notreDashboardActivityaprès 3 secondes d'attente.
- Pour ajouter un contact, il faut se rendre dans l'onglet
Contactset ajouter un contact à l'aide duFloatingActionButton. Lors de l'ajout d'un contact nous interrogeons Firebase et nous vérifions si le nom du contact est bien existant.
- Pour envoyer un message depuis l'application, il faut dans un premier temps ajouter le contact avec lequel l'on souhaite communiquer. Ensuite, il suffit de cliquer sur ce contact pour pouvoir accéder à la discussion.
- Le chiffrement
RSA, nous permet de pouvoir vérifier l'identité de notre destinataire à l'aide de la signature. Ce chiffrement est essentiellement utilisé dans notre projet, pour pouvoir échanger la passphrase de manière asynchrone et sécurisée.
- Le chiffrement
AES, nous permet de pouvoir chiffrer chaque message de notre fil de discussion. Chaque message possède unsaltdifférent. Pour déchiffrer un message, lesaltlié au message et la passphrase sont utilisés.
-
Pour le stockage de la clé privée sur le téléphone, nous n'avons pas trouvé de solution sécurisée pour pouvoir changer de compte utilisateur sur le même téléphone.
-
Le changement de mail est géré dans le profil de l'utilisateur. Cependant, Firebase nous renvoie une erreur alors que nous avons bien suivi la documentation
-
La gestion des événements été laborieuse, nous avons dans un premier temps utilisé les interfaces, avant de mettre en place le système de
BUS. Ce système est bien plus pratique, mais reste assez lourd à cause de la mise en place desevents,handler... -
La réalisation des vues est plutôt laborieuse.
-
Pour l'activité
Dashboard, nous utilisons lesTabLayout, qui nous permet d'ajouter des onglets de fragments dans notre vue. Pour la mise en place de cette vue, plusieurs difficultés ont été rencontrées (mauvaise façon de faire, gestion des fragments...) -
Nous avons rencontré plusieurs problèmes avec les retours d'événements de Firebase (avoir le résultat d'une requête unique), mais le problème a été résolu grâce à l'utilisation d'une méthode.
-
La classe RSA n'était pas fonctionnelle sur certaines méthodes (cela a été résolu avec Louis).
-
L'éditeur Android Studio a planté plusieurs fois sur nos PC. Qu'il a été parfois difficile de retrouver notre projet fonctionnel (même après l'utilisation de la pocket Ball).
-
La gestion du
Bundlepour la restauration des données d'une activité (utilisation du bouton retour Android) n'est pas fonctionnel. -
Plusieurs problèmes ont été rencontrés sur la gestion de la conversation (PB avec firebase sur le retour de requêtes, PB lors de l'initialisation de la conversation entre 2 contacts, plantage de l'application lors du changement de l'activité
Contact -> DiscussionetDiscussion -> Dashboard...), du coup la discussion n'est pas fonctionnelle :(
- Github: https://github.com/jdacosta/workshop-android-crm14
- Archive: https://github.com/jdacosta/workshop-android-crm14/releases/tag/0.0.1
- Screenshot: https://github.com/jdacosta/workshop-android-crm14/tree/rendu_final/Screenshots
- APK: https://github.com/jdacosta/workshop-android-crm14/tree/rendu_final