DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions spécifiques Mobile / Fonctions de gestion du téléphone
  • Présentation
  • Principe
  • Gestion des notifications push dans l'application mobile
  • Gestion des notifications push dans le serveur d'application
  • Exemples livrés
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
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.
  • Android 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.
Principe
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 :
Schéma notification
  1. L'application s'enregistre auprès du service Apple ou Google en utilisant le "device id" et l' "application id".
  2. Si l'enregistrement est réussi, le service Apple ou Google renvoie un token (ou "registration id") à l'application.
  3. L'application transmet alors le token au serveur d'application (fournisseur).
  4. 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é.
Android Notifications push Android sur un sujet spécifique (via abonnement) :
Ce type de notifications push ne nécessite pas le stockage des identifiants des différentes devices recevant les notifications push.
Dans ce cas, un message push est envoyé de la façon suivante :
  1. Des applications Android s'abonnent à un sujet.
  2. Le serveur d'application envoie un message push sur un sujet.
  3. Le service Google se charge de transmettre le message aux devices abonnés au sujet concernés.
Gestion des notifications push dans l'application mobile
Plusieurs fonctions sont disponibles pour gérer les notifications push dans l'application mobile :
NotifPushAbonneAbonne l'application Android en cours aux notifications push relatives à un sujet.
NotifPushActiveActive la gestion des notifications push dans une application WINDEV Mobile (Android ou iOS).
NotifPushDésabonneDésabonne l'application des notifications push envoyées pour le sujet spécifié.
NotifPushDésactiveDésactive la gestion des notifications push pour une application WINDEV Mobile (Android ou IOS).
NotifPushProcédureSpé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 :
  • Android Une configuration spécifique doit être réalisée via la console Firebase. Pour plus de détails, consultez Configuration Android (Firebase).
  • iPhone/iPad 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 :
  1. 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.
    Android 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.
  2. Si l'application est déjà lancée :
    • Android 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.
    • iPhone/iPad 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 :
    // Résumé : Procédure appelée lors du clic sur une notification PUSH
    PROCÉDURE onPush(maNotif est une Notification)

    SI FenEtat("FEN_Main") <> Inexistant ALORS
    // FEN_Main est déjà ouverte ou affichée
    RéceptionNotifPush(maNotif, Vrai)
    SINON
    // On ouvre la fenêtre d'accueil
    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.
  • Android via la fonction NotifPushEnvoieAbonné. Les notifications sont envoyées à tous les téléphones abonnés à un sujet donné.
Exemples livrés
WINDEV Mobile est livré avec les exemples suivants :
  • Projet WD_Serveur_Push (Webservice) :
    1. 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).
    2. Déployer le Webservice.
    3. Récupérer l'URL du WSDL déployé.
  • Projet WM Push (Application mobile qui reçoit les notifications) :
    1. Modifier l'URL du Webservice déjà importé dans le projet avec l'URL récupérée précédemment.
    2. 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.
    3. 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) :
    1. Modifier l'URL du Webservice déjà importé dans le projet avec l'URL récupérée précédemment.
    2. Exécuter l'application pour envoyer des notifications.
    3. 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 :
WM Push 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.
WD_Serveur_Push 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.
Envoi Push 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.
Version minimum requise
  • Version 19
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 07/03/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale