Utiliser Firebase Cloud Messaging (FCM) avec chrome.gcm

Vous pouvez envoyer et recevoir des messages aux utilisateurs finaux avec chrome.gcm. Étant donné qu'il repose sur Firebase Cloud Messaging (FCM), il repose sur un service externe que vous devez configurer. Ce guide vous explique toutes les étapes nécessaires à son fonctionnement dans votre extension.

Bien que chrome.gcm soit toujours compatible, il a été créé il y a plus de 10 ans avant la norme Push. En règle générale, il est toujours recommandé d'utiliser la norme Web plutôt qu'une API spécifique à l'extension. À moins que vous n'ayez spécifiquement besoin d'utiliser chrome.gcm, nous vous recommandons d'utiliser la méthode Push.

Prérequis

Pour utiliser chrome.gcm, vous devez configurer un compte Firebase.

Page d'accueil de Firebase.com
Page d'accueil de Firebase.com

Une fois votre compte créé, ouvrez la console Firebase, puis sélectionnez un projet existant à utiliser ou créez-en un pour votre extension.

Capture d'écran des listes de projets dans la console Firebase.
Fiches de projets dans la console Firebase

Accédez à la page des paramètres de Cloud Messaging.

Capture d'écran d'une page de paramètres Firebase Cloud Messaging.
Page des paramètres Firebase Cloud Messaging

Si vous disposez déjà d'un compte de messagerie dans le cloud pour ce projet, vous pouvez copier l'ID d'expéditeur numérique indiqué.

Si Cloud Messaging n'est pas activé, vous devez activer l'API Firebase Cloud Messaging pour le projet dans Google Cloud. L'image suivante montre où se trouve un lien direct vers cette page dans les paramètres Firebase.

Capture d'écran de l'emplacement du lien permettant d'activer l'API Firebase Messaging dans Google Cloud.
Ouvrir le lien des paramètres Google Cloud dans Firebase

Une fois l'option activée, revenez à la page des paramètres de Cloud Messaging et copiez l'ID de l'expéditeur.

Configurer chrome.gcm

Maintenant que vous disposez de votre ID d'expéditeur Firebase, vous pouvez configurer votre extension pour qu'elle écoute les messages. Pour commencer, assurez-vous d'avoir ajouté l'autorisation gcm au fichier manifest.json de votre extension.

  {
    "manifest_version": 3,
    ...
    "permissions": ["gcm"]

Vous avez désormais accès à l'API chrome.gcm. Vous pouvez vous inscrire pour écouter les messages push en appelant chrome.gcm.register.

Écouter les messages

Une fois que l'extension a enregistré votre ID d'expéditeur, vous devez ajouter du code pour gérer les messages entrants.

Firebase sans Firebase

Bien que chrome.gcm passe toujours par Firebase, Firebase peut être configuré pour servir de proxy pour les fournisseurs de messagerie push externes. En règle générale, les fournisseurs énumèrent explicitement la compatibilité avec les extensions Chrome, mais tout fournisseur compatible avec les anciennes notifications push de Firebase devrait fonctionner. Si votre fournisseur est compatible avec les anciennes notifications push de Firebase, essayez-le. Si vous rencontrez des problèmes, l'assistance du fournisseur devrait être en mesure de clarifier les restrictions qui seraient en place.

Chaînes et thèmes

chrome.gcm utilise les anciennes API Firebase Messaging. Ce point est important, car l'ancienne API n'est pas compatible avec les canaux de messagerie. Chaque message envoyé sera envoyé à chaque client. Si l'extension d'un utilisateur n'est intéressée que par un sous-ensemble de messages, vous devez vous filtrer.

Même si Firebase est un compte sans frais, vous serez facturé une fois que vous aurez atteint un certain seuil d'utilisation. Si vous prévoyez d'envoyer des messages à des groupes spécifiques, le filtrage côté client risque de coûter plus cher qu'il ne le devrait. Vous pouvez contourner ce problème en créant plusieurs projets afin de répliquer des canaux individuels (un projet et un ID d'expéditeur pour chaque canal). Une extension donnée peut enregistrer plusieurs ID d'expéditeur, jusqu'à 100.

Si vous avez besoin de la compatibilité avec certains canaux ou si vous souhaitez utiliser les notifications push sans passer par Firebase, vous pouvez également utiliser l'API Push.