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 est basé sur Firebase Cloud Messaging (FCM), il repose sur un service externe que vous devez configurer. Ce guide vous explique toutes les étapes nécessaires pour qu'il fonctionne dans votre extension.

Bien que chrome.gcm soit toujours pris en charge, il a été créé il y a plus de 10 ans, avant la norme Push. En général, il est toujours recommandé d'utiliser la norme Web plutôt qu'une API spécifique à une extension. Sauf si vous avez un besoin spécifique d'utiliser chrome.gcm, nous vous recommandons d'utiliser 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 fiches de projet dans la console Firebase.
Fiches de projet dans la console Firebase

Passez à 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'un compte de messagerie cloud existant pour ce projet, vous devez copier l'ID d'expéditeur numérique indiqué.

Si vous n'avez pas activé Cloud Messaging, vous devez activer l'API Firebase Cloud Messaging pour le projet dans Google Cloud. Dans l'image suivante, vous pouvez voir où se trouve le 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 de 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 d'expéditeur.

Configurer chrome.gcm

Maintenant que vous avez obtenu l'ID d'expéditeur de Firebase, vous pouvez configurer votre extension pour écouter 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 enregistrer 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 messages push externes. En règle générale, les fournisseurs indiquent explicitement la prise en charge des extensions Chrome. Toutefois, tout fournisseur compatible avec les anciennes notifications push de Firebase devrait fonctionner. Si votre fournisseur indique qu'il est compatible avec les anciennes notifications push de Firebase, essayez-les. En cas de problème, l'assistance du fournisseur devrait pouvoir vous indiquer les restrictions en vigueur.

À propos des chaînes et des thèmes

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

Firebase est un compte sans frais au départ, mais vous serez facturé si vous dépassez 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 que ce qui est justifié. Pour contourner ce problème, vous pouvez créer plusieurs projets pour répliquer des chaînes individuelles (un projet et un ID d'expéditeur pour chaque chaîne). Une extension donnée peut s'enregistrer pour plusieurs ID d'expéditeur, jusqu'à 100.

Si vous avez besoin de la prise en charge de canaux ou si vous souhaitez utiliser des notifications push sans passer par Firebase, vous pouvez utiliser l'API Push.