|
|
|
|
|
- Présentation
- Principe
- Gestion des notifications push dans l'application mobile
- Gestion des notifications push dans le serveur d'application
- Exemples livrés
Un terminal mobile peut recevoir des notifications en push. Une notification est un message qui s'affiche (et est conservé) sur le terminal, dans le centre de notification du terminal. Une notification peut par exemple permettre de lancer un traitement. Une notification est envoyée depuis une application distante, présente en général sur un serveur. L'application d'envoi de notifications peut être réalisée avec WINDEV ou WEBDEV, ou par des logiciels tiers. Il est possible d'envoyer des notifications Push : - soit à un ou plusieurs terminaux spécifiques, identifiés et connus.
- soit à un ensemble de terminaux quelconques, abonnés à un sujet spécifique ("Topic messaging"). Par exemple, une application sportive pourrait proposer un abonnement à tous les résultats d'une équipe spécifique.
Afin de réaliser un système de notification push, quatre éléments sont nécessaires : - Une application mobile (iOS ou Android) tournant sur le matériel approprié.
- Un service de notification qui permet de distribuer les messages push aux téléphones ou tablettes. Ce service est fourni :
- soit par Google : Firebase
Remarque : les application créées avant la version 22 utilisent le mécanisme Google Cloud Messaging (GCM). Ce mécanisme sera rendu obsolète par Google à partir d'Avril 2019. - soit par Apple (APM).
- Un serveur d'application (ou fournisseur) qui décide de l'envoi des messages et se charge de communiquer avec la base de données métier (ce serveur peut être un webservice ou une application WEBDEV ou WINDEV).
- Une base de données, stockant les identifiants des différents devices recevant les messages push, ainsi que des données métier.
Le schéma de fonctionnement global des messages push est alors le suivant : - L'application s'enregistre auprès du service Apple ou Google en utilisant le "device id" et l' "application id".
- Si l'enregistrement est réussi, le service Apple ou Google renvoie un token (ou "registration id") à l'application.
- L'application transmet alors le token au serveur d'application (fournisseur).
- Le serveur stocke le token dans sa base de données.
Un message push est alors envoyé de la manière suivante : a. Le serveur d'application envoie un message (en utilisant une socket SSL (iOS) ou HTTPS (Android)) contenant le token au service Apple ou Google. Remarque : cet envoi peut être fait par une application tierce, du moment que celle-ci a accès à la base de données métier et au certificat utilisé pour la communication avec le service de notification. b. Le service Apple ou Google se charge alors de transmettre le message au device concerné. Gestion des notifications push dans l'application mobile Plusieurs fonctions sont disponibles pour gérer les notifications push dans l'application mobile :
| | NotifPushAbonne | Abonne l'application Android en cours aux notifications push relatives à un sujet. | NotifPushActive | Active la gestion des notifications push dans une application WINDEV Mobile (Android ou iOS). | NotifPushDésabonne | Désabonne l'application des notifications push envoyées pour le sujet spécifié. | NotifPushDésactive | Désactive la gestion des notifications push pour une application WINDEV Mobile (Android ou IOS). | NotifPushProcédure | Spécifie la procédure WLangage appelée lorsqu'une notification push est reçue par une application WINDEV Mobile (Android ou iOS). |
Attention : une configuration spécifique est nécessaire pour faire fonctionner les applications mobiles : - Une configuration spécifique doit être réalisée via la console Firebase. Pour plus de détails, consultez Configuration Android (Firebase).
- Une configuration spécifique doit être réalisée. Pour plus de détails, consultez Configuration iOS.
Le comportement lors de la réception d'une notification est le suivant : - Si l'application est fermée, le système affiche la notification dans la barre de notification. L'utilisateur peut alors choisir de valider la notification. S'il le fait, l'application est lancée.
Si aucun message n'est spécifié dans la notification, l'application s'ouvre directement et la notification n'est pas affichée. A partir d'Android 10, il n'est plus possible d'ouvrir une fenêtre lorsque l'application est en arrière plan. Ce comportement n'est plus supporté. Une fois l'application lancée, il y a deux cas de figures :- Si la fonction NotifPushProcédure a été appelée dans le code d'initialisation du projet, la procédure globale passée en paramètre à cette fonction est appelée et la première fenêtre de l'application n'est pas ouverte.
Remarque : La fonction OuvreFenêtreMobile doit être appelée dans la procédure. - Si la fonction NotifPushProcédure n'a pas été appelée, la première fenêtre de l'application est ouverte.
- Si l'application est déjà lancée :
- Si un message ou un titre est spécifié dans la notification, le système affiche la notification dans la barre de notification. Si l'utilisateur clique sur la notification, la procédure spécifiée dans la fonction NotifPushProcédure est alors appelée (si elle n'est pas spécifiée, rien ne se passe).
Si aucun message ni aucun titre n'est spécifié dans la notification, la notification n'est pas affichée et la procédure est appelée directement. - Deux cas peuvent se présenter :
- Si l'application est en avant-plan, la procédure de la fonction NotifPushProcédure est appelée directement. Si aucune procédure n'est spécifiée, seul un bouton "ok" est affiché.
- Si l'application est en arrière-plan, le système affiche la notification. Si l'utilisateur valide la notification, l'application repasse en avant-plan et la procédure de la fonction NotifPushProcédure est appelée.
Remarques : - La constante exeLancement de la fonction ExeInfo permet de savoir si l'application a été lancée automatiquement par le système suite à la réception d'une notification push :
ExeInfo(exeLancement) = exeNotificationPush
- La fonction FenEtat permet de tester si besoin l'existence d'une fenêtre afin de l'ouvrir :
PROCÉDURE onPush(maNotif est une Notification)
SI FenEtat("FEN_Main") <> Inexistant ALORS
RéceptionNotifPush(maNotif, Vrai)
SINON
OuvreFenêtreMobile(FEN_Main, maNotif)
FIN
Gestion des notifications push dans le serveur d'application Le serveur d'application est l'application WINDEV ou le site WEBDEV qui envoie les notifications Push. Ce serveur d'application envoie les notifications push : - via la fonction NotifPushEnvoie. Les notifications sont alors envoyées aux téléphones identifiés via leur token.
Attention : la fonction NotifPushEnvoie doit connaître les identifiants (tokens) des téléphones concernés par la notification. Cette information doit être renvoyée par l'application mobile. - via la fonction NotifPushEnvoieAbonné. Les notifications sont envoyées à tous les téléphones abonnés à un sujet donné.
WINDEV Mobile est livré avec les exemples suivants : - Projet WD_Serveur_Push (Webservice) :
- Dans le code du projet, il est nécessaire de préciser :
- La clé de l'API android
- Le type de plateforme Android : utiliser les constantes npeFirebase ou npeGCM (constante npeFirebase par défaut).
- Le chemin du certificat qui enverra les notifications iOS (Certificat à déployer avec le Webservice aussi).
- Déployer le Webservice.
- Récupérer l'URL du WSDL déployé.
- Projet WM Push (Application mobile qui reçoit les notifications) :
- Modifier l'URL du Webservice déjà importé dans le projet avec l'URL récupérée précédemment.
- Déploiement Android :
- Récupérer le fichier google-services.json pour une configuration avec Firebase sinon récupérer le numéro du projet dans Google Cloud Messaging.
- Dans l'assistant de génération Android, faire attention à ce que le nom du package soit le même que celui définit auprès des services Google.
- Déploiement iOS : Spécifier le même bundle que celui défini dans la console Apple
- Projet Envoi Push (Application cliente pour envoyer des notifications via le Webservice) :
- Modifier l'URL du Webservice déjà importé dans le projet avec l'URL récupérée précédemment.
- Exécuter l'application pour envoyer des notifications.
- Pour iOS, ne pas oublier de spécifier le bundle de l'application visée par l'envoi des notifications, un champ de saisie est prévu à cet effet.
Liste des exemples associés :
|
Exemples multiplateforme : WM Push
[ + ] Cet exemple montre comment recevoir des notifications Push. Il appelle la fonction NotifPushActive et envoie l'identifiant obtenu à l'exemple WINDEV "WD Serveur Push" afin qu'il le stocke. Cet identifiant est ensuite lu par l'exemple WINDEV "Envoi Push" afin qu'il envoie les notifications en push à cet exemple.
|
|
Exemples multiplateforme : WD_Serveur_Push
[ + ] Cet exemple est un webservice servant à stocker les identifiants nécessaires au Push sur mobiles. L'application WINDEV Mobile WM Push stockent les identifiants Push dans la base de cet exemple. Ces identifiants sont ensuite lus par l'exemple "WD Envoi Push" afin qu'il envoie les notifications.
|
|
Exemples multiplateforme : Envoi Push
[ + ] Cet exemple permet d'envoyer des notifications en push sur des appareils Android et iOS. Il récupère les identifiants des mobiles dans la base HFSQL de l'exemple "WD Serveur Push", et leur envoie ensuite les notifications grâce à la fonction NotifPushEnvoie.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|