Comment intégrer les notifications push dans votre PWA

Publié: 2021-04-28

Table des matières

Dans notre tutoriel d'aujourd'hui, nous allons intégrer les notifications push dans une PWA en utilisant Firebase, ou plus précisément, en utilisant la fonctionnalité Cloud Messaging qui permet l'envoi de messages à l'aide de requêtes HTTPS.

Applications Web progressives et notifications push

Étant donné que la Progressive Web App est celle d'un mouvement en constante évolution, il n'est pas surprenant de voir que la technologie elle-même est devenue à égalité (fonctionnellement) avec son homologue d'application native.

 Lecture recommandée : PWA vs Native : qu'est-ce qui vous convient le mieux ?

Les déclencheurs de notification permettent aux développeurs de programmer des notifications, même si l'appareil de l'utilisateur est en mode avion.

Jon Krafcik, Sommet des développeurs Chrome 2019
Déclencheurs de notification push - Chrome Dev Summit 2019
Nouveau dans Chrome 80, les déclencheurs de notification activent les notifications même en mode avion

Avec tous ces changements radicaux en place, ce serait un gaspillage de ne pas en profiter pour générer encore plus de revenus pour votre PWA. Et ce n'est même pas quelque chose de trop compliqué car vous pouvez facilement configurer votre propre fonction de notification push à l'aide de ce didacticiel.

 Lecture recommandée : 9 fonctionnalités indispensables d'une application Web progressive (PWA) pour le commerce électronique

Comment intégrer les notifications push dans votre PWA

Dans notre tutoriel d'aujourd'hui, nous allons intégrer les notifications push dans une PWA à l'aide de Firebase , en particulier la fonctionnalité Cloud Messaging qui permet l'envoi de messages à l'aide de requêtes HTTPS.

Conditions préalables

  • Un compte Firebase (puisque vous allez créer un projet dans Firebase)
  • Une application Web progressive. Pour une démonstration simplifiée, nous utiliserons un create-react-app qui est un PWA de base qui peut être créé à l'aide d'une commande
Notifications push PWA : Créer un projet Firebase
Créer un projet avec Firebase

Étape 1 : Créer une PWA de base

Puisque nous allons créer une PWA de base en utilisant create-react-app, téléchargeons d'abord NodeJS. Une fois l'installation de NodeJS terminée, ouvrez l'invite de commande NodeJS et exécutez les commandes suivantes.

Pour créer une application React simple dans votre répertoire spécifié :

 npx create-react-app votre-répertoire-pwa

Remplacez le répertoire de travail actuel par votre application React nouvellement créée :

 cd votre-répertoire-pwa

Ajoutez la bibliothèque JavaScript Firebase au projet :

 npm install firebase --save 
Installation de Firebase

Étape 2 : Créez votre push-notification.js

L'étape suivante consiste à créer le module qui sera en charge de tous vos traitements de notification. Dans <your-pwa-directory>\src , créez un fichier nommé push-notification.js .

Commençons par créer une fonction qui initialise Firebase et transmet les clés de votre projet. Vous pouvez trouver les clés de votre projet en allant dans Firebase > Project Overview → Project Settings et cliquez sur cette icône :

SDK Firebase pour notification push PWA

Cela vous dirigera vers une autre page contenant le SDK Firebase pour votre PWA :

SDK Firebase

Maintenant que nous avons les clés de notre projet, ajoutons le code suivant dans votre push-notification.js .

 importer la base de feu à partir de 'firebase' ;
export const initializeFirebase = () => {
  firebase.initializeApp({
    Clé API : "XXXXXXXXXXXXX",
    authDomain : "XXXXXXXXXXXXX",
    URL de la base de données : "XXXXXXXXXXXXX",
    ID de projet : "XXXXXXXXXXXXX",
    compartiment de stockage : "XXXXXXXXXXXXX",
    messageSenderId : "XXXXXXXXXXXXX",
    ID d'application : "XXXXXXXXXXXXX"
  });
}

Avec cela, vous avez créé la fonction en charge de tout le traitement de vos notifications, vous devez maintenant l'importer et l'appeler. Modifiez votre index.js comme suit :

 importer React depuis 'react' ;
importer ReactDOM depuis 'react-dom' ;
importer './index.css' ;
importer l'application depuis './App' ;
importer * en tant que serviceWorkerRegistration depuis './serviceWorkerRegistration' ;
importer reportWebVitals depuis './reportWebVitals' ;
importer la base de feu à partir de 'firebase' ;
import { initializeFirebase } depuis './push-notification' ;
ReactDOM.render(<App />, document.getElementById('root'));
initializeFirebase();

Étape 3 : Créer un agent de service

Service Workers est le nom de la technologie derrière une application Web progressive, qui alimente sa capacité hors ligne, les notifications push et la mise en cache des ressources.

SimiCart, tout ce que vous devez savoir sur les applications Web progressives

Un agent de service est requis pour la réception de l'événement onMessage et, par conséquent, pour permettre l'envoi de notifications à l'appareil de l'utilisateur. Par défaut, Firebase recherche automatiquement un fichier appelé firebase-messaging-sw.js .

Ajoutons firebase-messaging-sw.js au répertoire où vos fichiers sont servis. Puisque le nôtre est un projet create-react create-react-app , ce firebase-messaging-sw.js ira dans notre dossier public :

 importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-messaging.js');
firebase.initializeApp({
    Clé API : "XXXXXXXXXXXXX",
    authDomain : "XXXXXXXXXXXXX",
    URL de la base de données : "XXXXXXXXXXXXX",
    ID de projet : "XXXXXXXXXXXXX",
    compartiment de stockage : "XXXXXXXXXXXXX",
    messageSenderId : "XXXXXXXXXXXXX",
    ID d'application : "XXXXXXXXXXXXX"
});
const messagerie = firebase.messaging();

Si vous n'avez pas encore entendu parler de PWA Service Worker, nous vous proposons un article exclusif pour tout savoir sur cette technologie étonnante.

Étape 4 : demander les autorisations des utilisateurs pour envoyer des notifications

C'est l'ère de la vie privée, et vous ne voulez pas ennuyer vos utilisateurs en envoyant des notifications indésirables et non autorisées !

Pour demander la permission de votre utilisateur, ajoutez simplement ceci à votre push-notification.js :

 importer la base de feu à partir de 'firebase' ;
 
export const initializeFirebase = () => {
  firebase.initializeApp({
    Clé API : "XXXXXXXXXXXXX",
    authDomain : "XXXXXXXXXXXXX",
    URL de la base de données : "XXXXXXXXXXXXX",
    ID de projet : "XXXXXXXXXXXXX",
    compartiment de stockage : "XXXXXXXXXXXXX",
    messageSenderId : "XXXXXXXXXXXXX",
    ID d'application : "XXXXXXXXXXXXX"
  });
}
 
export const askForPermissionToReceiveNotifications = async () => {
  essayer {
    const messagerie = firebase.messaging();
    attendre la messagerie.requestPermission();
    jeton const = attendre la messagerie.getToken();
    console.log('Votre jeton est :', jeton);
    
    retourner le jeton ;
  } capture (erreur) {
    console.error(error);
  }
}

Et puisque cette fonction devra être appelée de quelque part, nous allons donc l'ajouter en un clic. Modifiez le fichier app.js dans votre répertoire /src/ comme suit :

 importer le logo depuis './logo.svg' ;
importer './App.css' ;
import { askForPermissionToReceiveNotifications } depuis './push-notification' ;

fonction App() {
  revenir (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Modifiez <code>src/App.js</code> et enregistrez pour recharger.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          cible="_blank"
          rel="noopener noreferrer"
        >
          Apprendre Réagir
        </a>
		 <bouton onClick={askForPermissionToReceiveNotifications} >
          Cliquez pour recevoir des notifications
        </bouton>
      </header>
    </div>
  );
}

exporter l'application par défaut ;

Maintenant, lançons notre projet et vous devriez voir un bouton Cliquez pour recevoir des notifications comme ceci :

Cliquez pour recevoir le bouton des notifications

Cliquez sur le bouton et vous devriez voir une fenêtre vous demandant votre permission :

Invite de notification push

Cliquez sur Autoriser et vérifiez la console de votre navigateur. Vous devriez voir un message vous informant de votre jeton :

Jeton d'utilisation généré

Maintenant, enregistrez ce jeton ailleurs car vous en aurez besoin à l'étape suivante.

Étape 5 : Envoyer des notifications push avec Postman

Dans les étapes suivantes, nous utiliserons Postman pour envoyer des notifications à l'aide du service Cloud Messaging de Firebase.

Dans Postman, créez une requête POST avec les informations suivantes :

  • URL de demande : https://fcm.googleapis.com/fcm/send
  • Headers : Dans les headers de votre requête POST, vous aurez besoin d'avoir les clés suivantes :

Autorisation : clé= SERVER_KEY

Type de contenu : application/json

Autorisation et type de contenu correctement configurés

Remarques : SERVER_KEY se trouve sous l'onglet Cloud Messaging dans vos paramètres Firebase

  • Body : Remplissez le corps de votre requête POST avec le code suivant :
 {
    "notification": {
        "title": "SimiCart",
        "body": "Tester la notification push",
        "click_action": "http://localhost:3000/",
        "icon": "https://i.imgur.com/5zO5cce.png"
    }
    "à": "USER_TOKEN"
}

Remplacez USER_TOKEN par le jeton que vous avez obtenu (en cliquant sur le bouton Cliquez pour recevoir des notifications ) à l'étape 4. N'oubliez pas de choisir Type de corps brut et JSON .

Corps de facteur

Cliquez maintenant sur Envoyer et vous devriez voir une notification apparaître dans votre coin inférieur droit :

Tester le résultat de la notification push

Remarques : Ces notifications n'apparaissent que lorsque l'application est en arrière-plan ou réduite.

Toutes nos félicitations! Votre PWA peut désormais envoyer des notifications !

Conclusion

Nous espérons qu'après ce guide, vous pourrez désormais configurer en toute confiance votre propre fonction de notification push. Étant une nouvelle technologie, les applications Web progressives sont certainement une chose compliquée pour les utilisateurs non férus de technologie, c'est pourquoi il existe des fournisseurs de solutions facilement disponibles tels que SimiCart qui peuvent répondre à tous vos besoins grâce à nos années d'expérience dans les PWA.

Explorer simicart PWA