Usar o Firebase Cloud Messaging (FCM) com chrome.gcm

É possível enviar e receber mensagens para usuários finais com chrome.gcm. Como ele é baseado no Firebase Cloud Messaging (FCM), depende de um serviço externo que você precisa configurar. Este guia orienta você em todas as etapas necessárias para fazer com que ele funcione na sua extensão.

Embora o chrome.gcm ainda tenha suporte, ele foi criado há mais de uma década, antes do padrão Push. Em geral, é sempre uma prática recomendada usar o padrão da Web, em vez de uma API específica para a extensão. A menos que você tenha uma necessidade específica de usar chrome.gcm, recomendamos o uso de Push.

Pré-requisitos

Para usar chrome.gcm, você precisa configurar uma conta do Firebase.

página inicial do Firebase.com.
Página inicial do Firebase.com

Depois de criar uma conta, abra o console do Firebase e selecione um projeto existente para usar ou crie um novo para sua extensão.

Captura de tela das listagens de projetos no console do Firebase.
Listagens de projetos no Console do Firebase

Acesse a página de configurações da Mensagem do Cloud.

Captura de tela de uma página de configurações do Firebase Cloud Messaging.
Página de configurações do Firebase Cloud Messaging

Se você já tiver uma conta do Cloud Messaging nesse projeto, copie o ID do remetente numérico listado.

Se a mensagem na nuvem não estiver ativada, será necessário ativar a API Cloud Messaging do Firebase para o projeto no Google Cloud. Na imagem a seguir, você pode conferir onde há um link direto para esta página nas configurações do Firebase.

Captura de tela do local do link para ativar a API Firebase Messaging no Google Cloud.
Como abrir o link de configurações do Google Cloud no Firebase

Depois de ativar, volte à página de configurações do Cloud Messaging e copie o ID do remetente.

Configurar o chrome.gcm

Agora que você tem o ID do remetente do Firebase, pode configurar a extensão para detectar mensagens. Para começar, verifique se você adicionou a permissão gcm ao manifest.json da sua extensão.

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

Agora você tem acesso à API chrome.gcm. Você pode se registrar para receber mensagens de push chamando chrome.gcm.register.

Ouvir mensagens

Depois que a extensão registrar seu ID do remetente, será necessário adicionar um código para processar as mensagens recebidas.

Firebase sem Firebase

Embora o chrome.gcm sempre passe pelo Firebase, ele pode ser configurado para atuar como um proxy para fornecedores externos de mensagens push. Normalmente, os fornecedores listam explicitamente o suporte a extensões do Chrome. No entanto, qualquer fornecedor que ofereça suporte a notificações push legadas do Firebase deve funcionar. Se o provedor indicar suporte para as notificações push legadas do Firebase, teste essa opção. Se você tiver problemas, o suporte do provedor poderá esclarecer as restrições existentes.

Sobre canais e temas

chrome.gcm está usando as APIs legadas do Firebase Messaging. Isso é importante porque a API legada não é compatível com canais de mensagens. Cada mensagem enviada vai ser enviada para todos os clientes. Se a extensão de um usuário tiver interesse apenas em um subconjunto de mensagens, você vai precisar fazer a filtragem.

Embora o Firebase comece como uma conta sem custo financeiro, você vai receber cobranças quando ultrapassar um determinado limite de uso. Se você planeja enviar mensagens para grupos específicos, a filtragem do lado do cliente pode custar mais do que o garantido. Para contornar esse problema, crie vários projetos para replicar canais individuais (um projeto e um ID do remetente para cada canal). Qualquer extensão pode se registrar para vários IDs do remetente, até 100.

Como alternativa, se você precisar de suporte a canais ou quiser usar notificações push sem passar pelo Firebase, utilize a API Push.