Utiliser Firebase Cloud Messaging (FCM) avec browser.gcm

Vous pouvez envoyer et recevoir des messages aux utilisateurs finaux avec browser.gcm. Comme il repose sur Firebase Cloud Messaging (FCM), il s'appuie sur un service externe que vous devez configurer. Ce tutoriel vous guide à travers toutes les étapes nécessaires pour le faire fonctionner dans votre extension.

Bien que browser.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 préférable d'utiliser la norme Web plutôt qu'une API spécifique à une extension. À moins que vous n'ayez un besoin spécifique d'utiliser browser.gcm, nous vous recommandons d'utiliser Push.

Prérequis

Pour utiliser browser.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 et sélectionnez un projet existant à utiliser ou créez-en un pour votre extension.

Capture d'écran de la liste des projets dans la console Firebase.
Listes de projets dans la console Firebase

Accédez à la page des paramètres pour 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 cloud dans ce projet, copiez l'ID d'expéditeur numérique indiqué.

Si la messagerie cloud n'est pas activée, vous devrez activer l'API Firebase Cloud Messaging pour le projet dans Google Cloud. L'image ci-dessous montre où se trouve un lien direct vers cette page dans les paramètres Firebase.

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

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

Configurer browser.gcm

Maintenant que vous avez obtenu votre ID d'expéditeur depuis 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 browser.gcm. Vous pouvez vous inscrire pour écouter les messages push en appelant browser.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 browser.gcm passe toujours par Firebase, Firebase peut être configuré pour servir de proxy pour les fournisseurs externes de messagerie push. En général, les fournisseurs indiquent explicitement la compatibilité avec les extensions Chrome. Toutefois, tout fournisseur compatible avec les notifications push Firebase (ancienne version) devrait fonctionner. Si votre fournisseur indique qu'il est compatible avec les anciennes notifications push de Firebase, essayez-le. Si vous rencontrez des problèmes, l'assistance du fournisseur devrait pouvoir vous expliquer les restrictions en vigueur.

À propos des chaînes et des thèmes

browser.gcm utilise les anciennes API Firebase Messaging. C'est important, car l'ancienne API n'est pas compatible avec les canaux de messages. Chaque message envoyé est transmis à tous les clients. Si l'extension d'un utilisateur ne s'intéresse qu'à un sous-ensemble de messages, vous devrez effectuer le filtrage vous-même.

Firebase commence par être un compte sans frais, mais vous serez facturé une fois que vous aurez dépassé un certain seuil d'utilisation. Si vous prévoyez d'envoyer des messages à des groupes spécifiques, le filtrage côté client peut finir par coûter plus cher que prévu. Pour contourner ce problème, vous pouvez créer 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 s'enregistrer pour plusieurs ID d'expéditeur, jusqu'à 100.

Si vous avez besoin d'une assistance pour les chaînes ou si vous souhaitez utiliser les notifications push sans passer par Firebase, vous pouvez utiliser l'API Push.