Arborescence des pages

Esup-Multi permet la réception de messages d'informations diffusés sur des canaux mais également l'avertissement push (bip, pastille sur l'icône de l'app, bannière). Ce sont deux concepts distincts mais liés que l'on regroupe sous le terme "notification".

Esup-Multi ne fournit pas d'application/de backend qui permet d'envoyer une notification en revanche elle intègre les appels nécessaires à des API qui permettent de s'intégrer à un outil externe pour la gestion des messages. 

Enfin Esup-Multi utilise firebase (Firebase Cloud Messaging https://firebase.google.com/docs/cloud-messaging?hl=fr) qui est un service externe google pour faire la notification push sur android et iOS (donc 1 seul service à utiliser).

Principe de fonctionnement

Récupération / suppression d'un token FCM

1- Lorsqu'un un utilisateur se connecte, Multi demande un token pour l’utilisateur et pour le périphérique (parce qu’un utilisateur peut avoir un smartphone + une tablette par exemple) à Firebase
2- Firebase renvoie donc un token que Multi retourne au connecteur pour enregistrement en base (c’est le /register)

3- Le /unregister est appelé à la déconnexion volontaire de l’utilisateur. On supprime alors le token (pour ne plus lui envoyer de push)

Envoi d'un message

Quand une application de notifications envoie un message
1- Elle envoie une requête sur l’API firebase pour tous les tokens de tous les utilisateurs destinataires (c’est ça qui fait le push sur les smartphones, tablettes etc)
2- Et elle stocke le message en base et pour chaque destinataire le caractère lu/non lu etc.

Réception d'un message

Enfin quand l’utilisateur reçoit la notification push, il ouvre l’application et récupère les messages via l'API de l'application de notification. Firebase n’intervient plus.


Création d'un compte FCM

Il faut donc ouvrir un compte sur Firebase, c’est gratuit et utiliser le service FCM (https://firebase.google.com/docs/cloud-messaging?hl=fr).

Il faut également paramétrer la connexion à FCM dans l’application cliente c’est expliqué ici (et il faudra aussi le faire du coté de l'application de notifications forcément)

Exemple d'implémentation

A l'Université de Lorraine, l'application qui permet d'envoyer des notifications (ULTIM) est une application NodeJS branchée sur une base MongoDb.

Schéma de la collection ‘enregistrement’ stockée en base
{
  _id: ObjectId
  ip: String
  platform: String
  token: String
  uid: String
  date: Double
}
  • _id : identifiant de l’objet

  • ip : ip depuis laquelle le périphérique demande l’enregistrement du token

  • platform (nullable) : plateforme depuis laquelle le périphérique demande l’enregistrement du token (Android, iOS, web, amazon-fireos)

  • token : token FCM à enregistrer

  • uid : login de l’utilisateur

  • date : date à laquelle l’enregistrement a lieu (en ms : new Date().getTime())

Schéma de la collection ‘notification’ stockée en base
{
  _id: ObjectId
  author: String
  channel: String
  title: String
  message: String
  state: String
  uid: String
  cd: Double
}
  • _id : identifiant de l’objet

  • author : auteur de la notification (Nom Prénom). Peut être ‘@system’ si la notification est envoyée automatiquement par une application tierce

  • channel : canal sur lequel est émise la notification 

  • title : titre de la notification

  • message : contenu de la notification

  • state : état de la notification (UNREAD | READ | FAVORITE | ARCHIVED)

  • uid : login de l’utilisateur

  • cd : date de création de la notification (en ms : new Date().getTime())

  • Aucune étiquette