Compartilhar via


Firebase Cloud Messaging

O Firebase Cloud Messaging (FCM) é um serviço que facilita o sistema de mensagens entre aplicativos móveis e aplicativos de servidor. Este artigo fornece uma visão geral de como o FCM funciona e explica como configurar o Google Services para que seu aplicativo possa usar o FCM.

Imagem hero do Firebase Cloud Messaging

Este tópico fornece uma visão geral de alto nível de como o Firebase Cloud Messaging roteia mensagens entre seu aplicativo Xamarin.Android e um servidor de aplicativos e fornece um procedimento passo a passo para adquirir credenciais para que seu aplicativo possa usar serviços FCM.

Visão geral

O FCM (Firebase Cloud Messaging) é um serviço multiplataforma que lida com o envio, roteamento e enfileiramento de mensagens entre aplicativos de servidor e aplicativos cliente móveis. A FCM é sucessora do Google Cloud Messaging (GCM) e é criada no Google Play Services.

Conforme ilustrado no diagrama a seguir, o FCM atua como um intermediário entre remetentes de mensagens e clientes. Um aplicativo cliente é um aplicativo habilitado para FCM executado em um dispositivo. O servidor de aplicativos (fornecido por você ou sua empresa) é o servidor habilitado para FCM com o qual seu aplicativo cliente se comunica por meio do FCM. Ao contrário do GCM, o FCM possibilita que você envie mensagens para aplicativos cliente diretamente por meio da GUI de Notificações do Console do Firebase:

O FCM fica entre o aplicativo cliente e um servidor de aplicativos

Usando o FCM, os servidores de aplicativos podem enviar mensagens para um único dispositivo, para um grupo de dispositivos ou para vários dispositivos inscritos em um tópico. Um aplicativo cliente pode usar o FCM para assinar mensagens downstream de um servidor de aplicativos (por exemplo, para receber notificações remotas). Para obter mais informações sobre os diferentes tipos de mensagens do Firebase, consulte Sobre mensagens FCM.

Firebase Cloud Messaging em ação

Quando uma mensagem downstream é enviada a um aplicativo cliente de um servidor de aplicativos, o servidor de aplicativos envia a mensagem para um servidor de conexão FCM fornecido pelo Google; O servidor de conexão FCM, por sua vez, encaminha a mensagem para um dispositivo que está executando o aplicativo cliente. As mensagens podem ser enviadas por HTTP ou XMPP (Protocolo extensível de mensagens e presença). Como os aplicativos cliente nem sempre estão conectados ou em execução, o servidor de conexão FCM enfileira e armazena mensagens, enviando-as para aplicativos cliente à medida que se reconectam e ficam disponíveis. Da mesma forma, o FCM enfileirará upstream mensagens do aplicativo cliente para o servidor de aplicativos se o servidor de aplicativos não estiver disponível. Para obter mais informações sobre servidores de conexão FCM, consulte Sobre o Firebase Cloud Messaging Server.

O FCM usa as seguintes credenciais para identificar o servidor de aplicativos e o aplicativo cliente e usa essas credenciais para autorizar transações de mensagens por meio do FCM:

  • ID do remetente – a ID do remetente é um valor numérico exclusivo atribuído quando você cria seu projeto do Firebase. A ID do remetente é usada para identificar cada servidor de aplicativos que pode enviar mensagens para o aplicativo cliente. A ID do remetente também é o número do projeto; você obtém a ID do remetente do Console do Firebase ao registrar seu projeto. Um exemplo de uma ID do remetente é 496915549731.

  • Chave de API – a chave de API fornece ao servidor de aplicativos acesso aos serviços do Firebase; O FCM usa essa chave para autenticar o servidor de aplicativos. Essa credencial também é conhecida como a Chave do Servidor ou a Chave da API Web. Um exemplo de uma chave de API é AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • ID do aplicativo – a identidade do aplicativo cliente (independente de qualquer dispositivo específico) que se registra para receber mensagens do FCM. Um exemplo de uma ID do aplicativo é 1:415712510732:android:0e1eb7a661af2460.

  • Token de Registro – o Token de Registro (também conhecido como ID da Instância) é a identidade FCM do seu aplicativo cliente em um determinado dispositivo. O token de registro é gerado em tempo de execução – seu aplicativo recebe um token de registro quando é registrado pela primeira vez no FCM durante a execução em um dispositivo. O token de registro autoriza uma instância do aplicativo cliente (em execução nesse dispositivo específico) a receber mensagens do FCM. Um exemplo de um token de registro é fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (uma cadeia de caracteres muito longa).

Configurar o Firebase Cloud Messaging (posteriormente neste guia) fornece instruções detalhadas para criar um projeto e gerar essas credenciais. Quando você cria um novo projeto no Console do Firebase, um arquivo de credenciais chamado google-services.json é criado – adicione esse arquivo ao seu projeto Xamarin.Android, conforme explicado em Notificações Remotas com FCM.

As seções a seguir explicam como essas credenciais são usadas quando os aplicativos cliente se comunicam com servidores de aplicativos por meio do FCM.

Registro com FCM

Um aplicativo cliente deve primeiro registrar-se no FCM antes que o sistema de mensagens possa ocorrer. O aplicativo cliente deve concluir as etapas de registro mostradas no diagrama a seguir:

Diagrama de etapas de registro de aplicativo

  1. O aplicativo cliente entra em contato com o FCM para obter um token de registro, passando a ID do remetente, a Chave de API e a ID do Aplicativo para o FCM.

  2. FCM retorna um token de registro para o aplicativo cliente.

  3. O aplicativo cliente (opcionalmente) encaminha o token de registro para o servidor de aplicativos.

O servidor de aplicativos armazena em cache o token de registro para comunicações subsequentes com o aplicativo cliente. O servidor de aplicativos pode enviar uma confirmação de volta ao aplicativo cliente para indicar que o token de registro foi recebido. Depois que esse handshake ocorrer, o aplicativo cliente poderá receber mensagens (ou enviar mensagens para) o servidor de aplicativos. O aplicativo cliente poderá receber um novo token de registro se o token antigo estiver comprometido (consulte Notificações remotas com FCM para obter um exemplo de como um aplicativo recebe atualizações de token de registro).

Quando o aplicativo cliente não quiser mais receber mensagens do servidor de aplicativos, ele poderá enviar uma solicitação ao servidor de aplicativos para excluir o token de registro. Se o aplicativo cliente for desinstalado de um dispositivo, o FCM detectará isso e notificará automaticamente o servidor de aplicativos para excluir o token de registro.

Mensagens downstream

O diagrama a seguir ilustra como o Firebase Cloud Messaging armazena e encaminha mensagens downstream:

O FCM usa o repositório e o encaminhamento para mensagens downstream

Quando o servidor de aplicativos envia uma mensagem downstream para o aplicativo cliente, ele usa as seguintes etapas, conforme enumerado no diagrama acima:

  1. O servidor de aplicativos envia a mensagem para o FCM.

  2. Se o dispositivo cliente não estiver disponível, o servidor FCM armazenará a mensagem em uma fila para transmissão posterior. As mensagens são mantidas no armazenamento fcm por um máximo de 4 semanas (para obter mais informações, consulte Configurando o tempo de vida de uma mensagem).

  3. Quando o dispositivo cliente está disponível, o FCM encaminha a mensagem para o aplicativo cliente nesse dispositivo.

  4. O aplicativo cliente recebe a mensagem do FCM, processa-a e a exibe para o usuário. Por exemplo, se a mensagem for uma notificação remota, ela será apresentada ao usuário na área de notificação.

Nesse cenário de mensagens (em que o servidor de aplicativos envia uma mensagem para um único aplicativo cliente), as mensagens podem ter até 4kB de comprimento.

Para obter informações detalhadas sobre como receber mensagens FCM downstream no Android, consulte Notificações remotas com FCM.

Mensagens de tópico

O Sistema de Mensagens de Tópico possibilita que um servidor de aplicativos envie uma mensagem para vários dispositivos que aceitaram um tópico específico. Você também pode redigir e enviar mensagens de tópico por meio da GUI de Notificações do Console do Firebase. A FCM manipula o roteamento e a entrega de mensagens de tópico para clientes inscritos. Esse recurso pode ser usado para mensagens como alertas meteorológicos, cotações de ações e notícias de manchetes.

Diagrama de mensagens de tópico

As etapas a seguir são usadas no sistema de mensagens de tópico (depois que o aplicativo cliente obtém um token de registro, conforme explicado anteriormente):

  1. O aplicativo cliente assina um tópico enviando uma mensagem de assinatura para o FCM.

  2. O servidor de aplicativos envia mensagens de tópico ao FCM para distribuição.

  3. A FCM encaminha mensagens de tópico para clientes que assinaram esse tópico.

Para obter mais informações sobre mensagens de tópicos do Firebase, consulte o Tópico messaging do Google no Android.

Configurando o Firebase Cloud Messaging

Antes de usar os serviços fcm em seu aplicativo, você deve criar um novo projeto (ou importar um projeto existente) por meio do Console do Firebase. Use as seguintes etapas para criar um projeto do Firebase Cloud Messaging para seu aplicativo:

  1. Entre no Console do Firebase com sua conta do Google (ou seja, seu endereço do Gmail) e clique em CRIAR NOVO PROJETO:

    Botão Criar Novo Projeto

    Se você tiver um projeto existente, clique em importar um projeto do Google.

  2. Na caixa de diálogo Criar um projeto , insira o nome do projeto e clique em CRIAR PROJETO. No exemplo a seguir, um novo projeto chamado XamarinFCM é criado:

    Caixa de diálogo Criar um Projeto

  3. Na Visão geral do Console do Firebase, clique em Adicionar Firebase ao seu aplicativo Android:

    Adicione o Firebase ao seu aplicativo Android

  4. Na próxima tela, insira o nome do pacote do aplicativo. Neste exemplo, o nome do pacote é com.xamarin.fcmexample. Esse valor deve corresponder ao nome do pacote do seu aplicativo Android. Um apelido de aplicativo também pode ser inserido no campo Apelido do aplicativo:

    Inserindo o exemplo de FCM como o apelido do aplicativo

  5. Se seu aplicativo usa links dinâmicos, Convites ou Autenticação do Google, você também deve inserir seu certificado de autenticação de depuração. Para obter mais informações sobre como localizar seu certificado de autenticação, consulte Localizando a assinatura MD5 ou SHA1 do repositório de chaves. Neste exemplo, o certificado de autenticação é deixado em branco.

  6. Clique em ADICIONAR APLICATIVO:

    Clicando no botão Adicionar Aplicativo

    Uma chave de API do Servidor e uma ID do Cliente são geradas automaticamente para o aplicativo. Essas informações são empacotadas em um arquivo google-services.json que é baixado automaticamente quando você clica em ADICIONAR APLICATIVO. Salve esse arquivo em um local seguro.

Para obter um exemplo detalhado de como adicionar google-services.json a um projeto de aplicativo para receber mensagens de notificação por push do FCM no Android, consulte Notificações remotas com FCM.

Leitura adicional

  • O Firebase Cloud Messaging do Google fornece uma visão geral dos principais recursos do Firebase Cloud Messaging, uma explicação de como ele funciona e instruções de configuração.

  • O Build App Server Send Requests do Google explica como enviar mensagens com o servidor de aplicativos.

  • RFC 6120 e RFC 6121 explicam e definem o XMPP (Extensible Messaging and Presence Protocol).

  • Sobre mensagens FCM descreve os diferentes tipos de mensagens que podem ser enviadas com o Firebase Cloud Messaging.

Resumo

Este artigo forneceu uma visão geral do Firebase Cloud Messaging (FCM). Ele explicou as várias credenciais usadas para identificar e autorizar mensagens entre servidores de aplicativos e aplicativos cliente. Ele ilustrava os cenários de registro e mensagens downstream e detalhava as etapas para registrar seu aplicativo no FCM para usar os serviços fcm.