Sua primeira mensagem push multicast usando tópicos do FCM

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

1. Introdução

Metas

Neste codelab, você aprenderá a instrumentar seu aplicativo multiplataforma para que você possa enviar mensagens de push multicast para vários subgrupos de suas instâncias de aplicativo usando tópicos do FCM.

Depois de concluído, você poderá aproveitar a infraestrutura do FCM para gerenciar esses subgrupos, bem como mensagens push multicast nos subgrupos.

Visão geral dos tópicos

Os tópicos são uma maneira compatível com a infraestrutura do FCM de alcançar subgrupos de instâncias do seu aplicativo com mensagens.

O FCM fornece as APIs para enviar mensagens e manter assinaturas desses tópicos. O ato de associar e dissociar uma instância de aplicativo ao tópico é chamado de inscrição e cancelamento de inscrição, respectivamente

Os tópicos devem ser usados ​​para conteúdo disponível publicamente. Por exemplo, mensagens sobre atualizações meteorológicas. Se você quiser enviar mensagens confidenciais do usuário, use o SDK Admin do Firebase para multicast de mensagens em vários dispositivos .

O multicast baseado em tópicos é otimizado para taxa de transferência.

O que você vai aprender

  • Como inscrever usuários (e cancelar a inscrição) em tópicos de um aplicativo móvel.
  • Como enviar mensagens push multicast usando tópicos.
  • Como enviar mensagens para uma combinação de tópicos usando condições de tópico.
  • Como gerenciar assinaturas de tópicos no lado do servidor e fazer assinaturas e cancelamentos em massa.

O que você vai construir

  • Um aplicativo Android que assina/cancela a assinatura de tópicos e recebe mensagens quando enviadas para os tópicos.
  • Uma integração do lado do servidor usando o SDK Admin do Firebase, que será usado para enviar mensagens de tópicos por meio de APIs do FCM.

O que você precisará

  • Um navegador de sua escolha, como o Chrome.
  • IntelliJ IDEA IDE para desenvolvimento de aplicativos Java.
    • Certifique-se de ativar o suporte para Gradle durante a instalação.
  • Android Studio IDE para desenvolvimento de aplicativos Android.
  • Um dispositivo para executar o aplicativo Android. Qualquer um dos:
    • O emulador do Android. (Requer configuração no Android Studio ).
    • Um dispositivo Android físico conectado ao seu computador e definido para o modo de desenvolvedor.
  • Uma conta do Google para criar e gerenciar seu projeto do Firebase.

2. Configurando

Obtenha o código

Clone o repositório do GitHub na linha de comando:

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

O código de amostra será clonado no diretório fcm-codelab .

cd fcm-codelab

O aplicativo inicial para este codelab está no diretório de messaging da ramificação fcm-topics-codelab . Siga as etapas a seguir para alcançar o código inicial. Ele contém dois diretórios StockNewsApp e StockNewsServer . O primeiro contém o aplicativo Android inicial e o último tem o código do lado do servidor inicial.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

A versão completa deste codelab é colocada no diretório messaging/fcm-topics-codelab/completed .

Criar um projeto do Firebase

  1. No console do Firebase , clique em Adicionar projeto , nomeie o projeto do Firebase como StockNews e clique em continuar. Observação: lembre-se do ID do projeto do Firebase (ou clique no ícone Editar para definir o ID do projeto preferido).

fc08f9a7808e4553.png

  1. Você pode pular a ativação do Google Analytics. Para os propósitos deste codelab, você não precisa dele. Clique em Continuar.
  2. Clique em Criar projeto .

Parabéns! Você acabou de criar seu projeto do Firebase. Agora, você pode clicar no nome do projeto para entrar no console.

3. Configuração do aplicativo Firebase específico da plataforma

A maioria das alterações de código necessárias para ativar o suporte do Firebase já foi verificada no projeto em que você está trabalhando. No entanto, para adicionar suporte para plataformas móveis, você precisa:

  • Registre a plataforma desejada no projeto Firebase
  • Baixe o arquivo de configuração específico da plataforma e adicione-o ao código.

Para os propósitos deste codelab, adicionaremos um aplicativo Android Firebase.

84e0b3199bef6d8a.png Configurar Android

  1. No Console do Firebase , selecione Configurações do projeto na parte superior da barra de navegação esquerda na engrenagem Configurações e clique no ícone do Android em Seus aplicativos na página Geral .

Você deverá ver a seguinte caixa de diálogo: 8254fc299e82f528.png

  1. O valor importante a ser fornecido é o nome do pacote Android . Defina como com.ticker.stocknews .
    1. O nome do pacote fornecido aqui deve ser o mesmo fornecido no AndroidManifest.xml do código inicial do StockNewsApp . Se você quiser localizá-lo ou alterá-lo, siga estas etapas:
      1. No diretório StockNewsApp , abra o arquivo app/src/main/AndroidManifest.xml .
      2. No elemento manifest , localize o valor da string do atributo package . Esse valor é o nome do pacote Android.
  1. Na caixa de diálogo do Firebase, cole o nome do pacote copiado no campo de nome do pacote Android .
  2. Você não precisa do certificado de assinatura de depuração SHA-1 para este codelab, pois este aplicativo não será lançado. Deixe isso em branco.
  3. Clique em Registrar aplicativo .
  4. Continuando no Firebase Console, siga as instruções para baixar o arquivo de configuração google-services.json .
  5. Você pode pular as etapas de configuração restantes, pois todo o resto já está configurado no código do aplicativo inicial. Você encontrará seu aplicativo listado na página principal do Firebase Console.
  6. Copie o arquivo google-services.json (que você acabou de baixar) para o diretório messaging/fcm-topics-codelab/starter/StockNewsApp/app .

4. Crie e execute seu aplicativo

Você está pronto para realmente começar a trabalhar em seu aplicativo! Primeiro, compile e execute o aplicativo.

Importar o aplicativo inicial

Inicie o Android Studio e importe o messaging/fcm-topics-codelab/starter/StockNewsApp do diretório do código inicial.

Depois que o projeto for carregado, você também poderá ver um alerta de que o Git não está rastreando todas as suas alterações locais, você pode clicar em " Ignorar " ou no " X " no canto superior direito. (Você não enviará nenhuma alteração de volta ao repositório Git.)

No canto superior esquerdo da janela do projeto, você deverá ver algo como a imagem abaixo se estiver na visualização do Android . (Se você estiver na visualização Projeto , precisará expandir o projeto para ver a mesma coisa)

b574ea0089ee87c6.png

Observe que o Android Studio pode levar vários segundos para compilar o projeto em segundo plano pela primeira vez. Durante esse período, você verá um botão giratório na barra de status na parte inferior do Android Studio:

4bc64eb3b99eb0ae.png

Recomendamos que você espere até que isso termine antes de fazer alterações no código. Isso permitirá que o Android Studio obtenha todos os componentes necessários.

Além disso, se você receber um aviso dizendo "Recarregar para que as alterações de idioma tenham efeito?" ou algo semelhante, selecione "Sim".

Configuração do emulador

Se precisar de ajuda para configurar um emulador do Android, consulte o artigo Executar seu aplicativo .

Entenda o código inicial do aplicativo Android

  • O código inicial é um aplicativo Android leve com funcionalidade e interface do usuário mínimas.
  • Uma dependência do SDK de mensagens do Firebase já foi adicionada ao arquivo app/build.gradle .

f04ff8f48d186dff.png

  • No AndroidManifest.xml , um manipulador de retorno de chamada MESSAGING_EVENT já foi adicionado.
    • Esse manipulador, StockNewsMessagingService.java , estende a classe FirebaseMessagingService , que fornece várias funcionalidades relacionadas ao Firebase Cloud Messaging. Consulte a documentação do FirebaseMessagingService para saber mais. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • A função onNewToken é chamada quando o token de registro do FCM é criado ou atualizado. Consulte Geração de token do Monitor para obter mais informações.
    • A função onMessageReceived é chamada quando uma mensagem é recebida e o aplicativo está em primeiro plano. Atualmente, ele simplesmente registra a mensagem recebida.
  • Além disso, em AndroidManifest.xml , uma classe de Application Android também é fornecida chamada StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Esta classe será a primeira a ser instanciada quando o App iniciar.
    • Na função onCreate da classe StockNewsApplication , uma chamada de criação de token de registro FCM é adicionada. Ele irá gerar um token de registro FCM válido e registrá-lo.
  • O MainActivity.java adiciona o RecyclerView que exibe as opções de Categoria de estoque.
  • SubscriptionAdapter.java implementa RecyclerView.Adapter que desenha a tela de seleção de Categoria de Ações.
    • Cada categoria de ações tem um nome e uma alternância de assinatura ao lado.
    • Alterar a alternância deve fazer uma chamada de assinatura/cancelamento de tópico do FCM.
    • Você implementará essas chamadas nas próximas seções.
  • A classe model/StockCategories.java contém uma lista de todas as categorias de ações e seus nomes de tópicos associados.

b32663ec4e865a18.png

Execute o aplicativo inicial

  1. Conecte seu dispositivo Android ao seu computador ou inicie um emulador.
  2. Na barra de ferramentas superior, selecione seu dispositivo Android ou emulador de destino e pressione o botão Executar.

5b27fc5b237e06b9.png

  1. A IU do aplicativo terá a seguinte aparência:

ff5b1a1c53231c54.png

  1. O aplicativo criará um token de registro do FCM e o registrará. No entanto, nada mudará na IU do aplicativo.
    1. Copie e salve o Token de Registro do FCM, pois ele será usado nas próximas etapas.

927eb66bc909f36b.png

5. Envie uma mensagem de teste

Agora você está pronto para enviar uma mensagem de teste para a instância do aplicativo que você configurou na última etapa.

Importar o código do servidor inicial

Inicie o IntelliJ IDEA e abra o projeto messaging/fcm-topics-codelab/starter/StockNewsServer .

A visualização do projeto na barra de navegação esquerda deve ser algo assim:

da20711f6527dff6.png

Observe que pode levar alguns minutos para que o Intellij IDEA compile seu projeto, incluindo a extração das dependências necessárias.

Entenda o código inicial do servidor

  • O código inicial do servidor é um projeto Java baseado em Gradle.
  • O arquivo build.gradle já tem a dependência do SDK firebase-admin adicionado a ele. Este SDK fornece acesso a várias funcionalidades de envio de mensagens do FCM.

650fc733298588f8.png

  • Finalmente, existem duas classes, a saber:
    • FcmSender.java : Esta classe contém os seguintes métodos de observação:
      • initFirebaseSDK : Inicializa o SDK do administrador do firebase.
      • sendMessageToFcmRegistrationToken : envia uma mensagem para um Token de Registro FCM.
      • sendMessageToFcmTopic : envia uma mensagem para um tópico FCM.
      • sendMessageToFcmTopicCondition : envia uma mensagem para uma condição de tópico do FCM.
    • FcmSubscriptionManager.java : Esta classe contém métodos que permitem gerenciar assinaturas de tópicos do lado do servidor.
      • initFirebaseSDK : Inicializa o SDK do administrador do firebase.
      • subscribeFcmRegistrationTokensToTopic : inscreva os Tokens de Registro do FCM em um tópico do FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : cancela a inscrição dos Tokens de Registro do FCM de um tópico do FCM.

Configurando o código do servidor

  1. Primeiro, precisamos configurar uma conta de serviço do Firebase que permita que o SDK do administrador do firebase autorize chamadas para as APIs do FCM.
    1. Acesse o Firebase Console, clique no ícone de engrenagem ao lado de Visão geral do projeto na barra de navegação à esquerda e selecione Configurações do projeto . 8c2108d4d7c915e9.png
    2. Na página de configurações, selecione Contas de serviço e clique em Criar conta de serviço . 84b128cc5dac0a85.png
    3. Agora clique no botão Gerar nova chave privada e um download automático do seu arquivo de chave começará.
    4. Renomeie o arquivo de chave para service-account.json e copie-o na pasta messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources .
    5. Tanto FcmSender.java quanto o FcmSubscriptionManager.java carregam o arquivo service-account.json do caminho de classe usando o código a seguir. 8dffbee658e0bdd.png
  2. Neste ponto, o código do servidor está pronto. Execute Build -> Build Project na barra de menu superior.

Enviando uma mensagem de teste

  1. Em FcmSender.java localize a função sendMessageToFcmRegistrationToken e insira o token de registro do FCM que você copiou da seção Executar o aplicativo inicial no campo registrationToken .
  2. Na função main , descomente apenas a função sendMessageToFcmRegistrationToken e clique em executar para executar o código.
    1. Observe como o token de registro do FCM é definido no campo Token do objeto de message .
    2. Além disso, observe como usamos a API de send da interface FirebaseMessaging .

52e4a3ec3f816473.png

  1. Isso deve enviar uma mensagem para a instância do aplicativo que você configurou na etapa anterior.
  2. Quando a instância do aplicativo estiver em primeiro plano, você deverá ver o conteúdo da mensagem registrado.

d3540ec1089f97dd.png

  1. E quando a instância do aplicativo estiver em segundo plano, você observará a mensagem aparecer na bandeja de notificações.

31203deca59c03fe.png

Incrível, você usou o SDK Admin do Firebase para enviar mensagens para uma instância do aplicativo. Leia mais sobre como usar o SDK Admin do Firebase em seu servidor .

6. Implementar Inscrição/Cancelamento de Tópico

Nesta etapa, você implementará ações de inscrição e cancelamento de inscrição no tópico, na alternância Categoria de estoque do aplicativo Android.

Quando um usuário do aplicativo alterna a opção para uma determinada Categoria de Ações, uma assinatura de tópico ou uma chamada de cancelamento de assinatura será feita.

Código de revisão

  • Navegue até a classe SubscriptionAdapter.java no código do aplicativo Android e localize a classe RecyclerViewViewHolder .

6c0614199e684f6.png

  • O construtor de classe configura um ouvinte para a alternância de assinatura usando setOnCheckedChangeListener .
  • Dependendo da alternância do comutador, as ações de assinatura e cancelamento de assinatura são executadas chamando os métodos subscribeToStockCategory e unsubscribeFromStockCategory , respectivamente.
  • O método setData é chamado pelo onBindViewHolder do Adaptador RecyclerView para vincular o ViewHolder com a categoria de estoque apropriada.

Implementar assinatura de tópico

  1. No método subscribeToStockCategory , você implementará a chamada para a API subscribeToTopic do objeto FirebaseMessaging . O código poderia ser algo assim:
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Implementar o cancelamento da inscrição do tópico

  1. Da mesma forma, na condição else, você implementará a chamada para unsubscribeFromTopic API. Algo na linha do seguinte:
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Vamos experimentá-lo

  1. Execute o aplicativo e alterne as opções de Categoria de estoque para executar as ações de Assinatura e Cancelamento de assinatura. Ficaria algo assim:

Se inscrever

Cancelar subscrição

7. Enviando sua primeira mensagem de tópico

Nesta etapa, você implementará o código do lado do servidor para enviar uma mensagem de tópico do FCM.

Implemente a integração do lado do servidor para enviar mensagem de tópico

  1. No código do servidor, vá para FcmSender.java e localize o método chamado sendMessageToFcmTopic .

56381dd1b40cde9c.png

  1. Na primeira linha, forneça o Tópico do FCM para o qual você deseja enviar a mensagem.
    • É uma string no formato: /topics/<Topic Name> . Por exemplo, /topics/Technology .
  2. Nas próximas linhas crie um novo objeto de message (semelhante ao definido na função sendMessageToFcmRegistrationToken ).
    • A diferença será que ao invés de configurar o campo Token do objeto message , você configurará o campo Topic .
Message message = Message.builder()
        .putData("FOOTECH", "$1000")
        .setNotification(
            Notification.builder()
                .setTitle("Investor confidence in Tech Stocks growing")
                .setBody("Foo Tech leading the way in stock growth for Tech sector.")
                .build())
        .setTopic(topicName)
        .build();
  1. Agora adicione a chamada à instância do FirebaseMessaging para enviar a mensagem (idêntica à chamada de envio feita na função sendMessageToFcmRegistrationToken ).
FirebaseMessaging.getInstance().send(message);
  1. Por fim, atualize a função main e ative a chamada apenas para a função sendMessageToFcmTopic .

9a6aa08dd7c28898.png

Envie mensagem e valide o recebimento

  1. Antes de enviar a mensagem do tópico, primeiro certifique-se de que sua instância do aplicativo esteja inscrita no tópico para o qual você deseja enviar.
    1. Isso pode ser feito com um giro da alternância correspondente. Por exemplo:
    4668247408377712.png
  2. Agora você pode enviar sua mensagem de tópico executando a função main de FcmSender.java .
  3. Como antes, você poderá observar o recebimento da mensagem na instância do aplicativo.
    1. Instância do aplicativo em primeiro plano
    c144721399f610fe.png
    1. Instância do aplicativo em segundo plano
    44efc7dfd57e8e9a.png
  4. Bônus: tente cancelar a inscrição no tópico para o qual você enviou e reenvie a mensagem. Você observaria que a mensagem não está sendo entregue à instância do aplicativo.

8. Enviando sua primeira mensagem de condição do tópico

O recurso de condição de tópico permite enviar mensagens para uma combinação de tópicos, permitindo que você forneça uma definição de público mais expressiva.

Por exemplo, em nosso aplicativo StockNews, considere a possibilidade de enviar mensagens para um grupo de instâncias do aplicativo que estão inscritas em tópicos de tecnologia ou automotivo. Tal caso pode ocorrer, por exemplo, se houver um evento notável envolvendo Waymo.

Os tópicos permitem que você expresse sua combinação na forma de uma expressão booleana usando os seguintes operadores

  • && : E Lógico. Por exemplo, 'Technology' in topics && 'Automotive' in topics - segmenta apenas as instâncias do aplicativo que estão inscritas em Tecnologia e Tópicos automotivos.
  • || : OU lógico. Por exemplo, 'Technology' in topics || 'Automotive' in topics - segmenta instâncias de aplicativos que estão inscritas em tópicos de tecnologia ou automotivos.
  • () : Parênteses para agrupamento. Por exemplo, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - segmenta apenas instâncias de aplicativos que estão inscritas nos tópicos Tecnologia e Automotivo ou Energia.

Leia mais sobre como criar solicitações de envio para usar essa funcionalidade.

Implemente a integração do lado do servidor para enviar a mensagem de condição do tópico

  1. De volta ao código do servidor, vá para FcmSender.java e localize o método chamado sendMessageToFcmTopicCondition .

3719a86c274522cf.png

  1. Na primeira linha, para a variável topicCondition , forneça a condição de tópico para a qual você deseja enviar a mensagem. Você pode configurá-lo para: 'Technology' in topics && 'Automotive' in topics .
  2. Nas próximas linhas, crie um novo objeto de message (semelhante ao definido na função sendMessageToFcmTopic ).
    1. A diferença será que ao invés de definir o campo Topic do objeto, você irá definir o campo Condition .
    Message message = Message.builder()
        .putData("FOOCAR", "$500")
        .setNotification(
            Notification.builder()
                .setTitle("Foo Car shows strong Q2 results")
                .setBody("Foo Car crosses 1B miles. Stocks rally.")
                .build())
        .setCondition(topicCondition)
        .build();
  1. Agora adicione a chamada à instância do FirebaseMessaging para enviar a mensagem (idêntica à chamada de envio feita na função sendMessageToFcmTopic ).
FirebaseMessaging.getInstance().send(message);
  1. Por fim, atualize a função main e habilite a chamada apenas para a função sendMessageToFcmTopicCondition .

db9588d40d2a0da6.png

Envie a mensagem e valide o recebimento

  1. Antes de enviar a mensagem do tópico, primeiro certifique-se de que sua instância do aplicativo satisfaça a condição de tópico especificada, inscrevendo a instância do aplicativo nos tópicos Tecnologia e Automotivo.
  2. Agora você pode enviar sua mensagem de tópico executando a função main de FcmSender.java .
  3. Como antes, você poderá observar o recebimento da mensagem na instância do aplicativo.
    1. Instância do aplicativo em primeiro plano
    6f612ace15aa6515.png
    1. Instância do aplicativo em segundo plano
    78044a56ac2359cb.png
  4. Bônus: agora você pode cancelar a assinatura do tópico Tecnologia e reenviar a mensagem de condição do tópico. Você deve observar que a mensagem não é recebida pela instância do aplicativo.

9. Recapitulação

Vamos fazer uma rápida recapitulação do que você aprendeu até este ponto.

  • Como iniciar uma assinatura/cancelamento de tópico de uma instância de aplicativo.
  • Enviando uma mensagem para o tópico e verificando o recebimento em instâncias de aplicativos inscritas.
  • Enviando uma mensagem para uma condição de tópico e verificando o recebimento em uma instância de aplicativo que satisfaça a condição.

Na próxima seção, você aprenderá sobre como inscrever/cancelar a inscrição de instâncias de aplicativos em tópicos sem precisar instanciar chamadas do lado do cliente.

c0dc20655d392690.gif

10. Gerenciar assinaturas de tópicos do lado do servidor

Até agora, neste codelab, todas as chamadas de assinaturas e cancelamentos de tópicos são iniciadas a partir de uma instância do aplicativo.

No entanto, em alguns casos de uso, você pode querer gerenciar as assinaturas de tópicos do lado do servidor. Por exemplo, você pode querer inscrever um subgrupo de sua base de usuários existente em um novo tópico sem esperar pelo lançamento de um aplicativo.

Nesta seção, você aprenderá a usar o SDK Admin do Firebase para assinar e cancelar a assinatura de um lote de tokens de registro do FCM para um tópico fazendo chamadas do lado do servidor.

Implementar a assinatura do lado do servidor de tokens de registro do FCM para o tópico do FCM

  1. No código do servidor, vá para a classe FcmSubscriptionManager.java . Localize o método chamado subscribeFcmRegistrationTokensToTopic . Você implementará a chamada para a API subscribeToTopic aqui.

5d5709e7b3cbcb04.png

  1. Vamos inscrever a instância do aplicativo no tópico Energia. Para fazer isso, primeiro forneça dados para os dois campos a seguir:
    1. registrationTokens : uma lista separada por vírgulas de strings que representam os Tokens de Registro do FCM para os quais você gostaria de criar assinaturas de tópicos.
    2. topicName : o nome do tópico para o tópico Energia, ou seja, /topics/Energy .
  2. Nas próximas linhas implemente a chamada, seguindo estas linhas:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Você pode inspecionar o TopicManagementResponse para obter algumas estatísticas de resultados de alto nível. Como imprimir o número de assinaturas de tópicos criadas com sucesso usando getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Por fim, na função main , habilite chamadas apenas para a função subscribeFcmRegistrationTokensToTopic .

Criar assinatura e enviar mensagem de tópico

  1. Neste ponto, você está pronto para criar a assinatura do tópico e enviar uma mensagem para ela.
  2. Execute a função main da classe FcmSubscriptionManager.java . Isso criará uma assinatura de tópico.
  3. Agora, configure o código para enviar a mensagem. Semelhante a antes,
    1. No FcmSender.java , localize a função sendMessageToFcmTopic .
    2. Defina o topicName para o tópico Energy, ou seja, /topics/Energy .
    3. Crie um objeto Message e direcione-o para o tópico usando setTopic .
    4. Por fim, atualize o método main para habilitar apenas a função sendMessageToFcmTopic .
  4. Execute a função main de FcmSender.java . Isso enviará a mensagem para sua instância de aplicativo e você poderá observá-la em seu aplicativo da seguinte maneira.
    1. Instância do aplicativo em primeiro plano
    40ab6cf71e0e4116.png
    1. Instância do aplicativo em segundo plano
    8fba81037198209e.png

Implementar o cancelamento de assinatura do lado do servidor de tokens de registro do FCM para o tópico do FCM

  1. Para cancelamentos de assinaturas de tópicos do lado do servidor, use esta API unsubscribeFromTopic . Você adicionará o código relevante à função unsubscribeFcmRegistrationTokensFromTopic da classe FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

  1. Implementar o código de cancelamento de assinatura do lado do servidor e validar seu efeito enviando uma mensagem de tópico fica como um exercício para você.

11. Parabéns

Parabéns, você usou com êxito os tópicos do FCM para enviar mensagens multicast para subgrupos de suas instâncias do aplicativo. Isso ajudará a simplificar sua capacidade de alcançar seus usuários em tempo hábil com conteúdo relevante.

947def3eb33b1e4a.gif

Qual é o próximo?

Agora que você concluiu seu codelab, experimente tópicos para outras plataformas usando os seguintes guias:

Documentos de referência