Sua primeira mensagem push multicast usando tópicos do FCM

1. Introdução

Metas

Neste codelab, você vai aprender a instrumentar seu app multiplataforma para transmitir mensagens push multicast para vários subgrupos das instâncias do app usando tópicos do FCM.

Depois de terminar, você poderá usar a infraestrutura do FCM para gerenciar esses subgrupos, bem como mensagens push multicast sobre eles.

Visão geral da API Topics

Os tópicos são uma maneira com suporte da infraestrutura do FCM de alcançar subgrupos das instâncias do seu app com mensagens.

O FCM fornece as APIs para enviar mensagens, além de manter assinaturas nesses tópicos. O ato de associar e dissociar uma instância do app a um tópico é chamado de assinar e cancelar a assinatura, 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 sensíveis ao usuário, use o SDK Admin do Firebase para fazer o multicast de mensagens em vários dispositivos.

O multicast baseado em tópicos é otimizado para capacidade de processamento.

O que você aprenderá

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

O que você vai criar

  • Um app Android que se inscreve/cancela a inscrição em tópicos e recebe mensagens quando elas são 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 pelas APIs do FCM.

O que é necessário

  • Um navegador de sua escolha, como o Chrome.
  • IntelliJ IDEA (em inglês) para desenvolver aplicativos Java.
    • Ative o suporte para Gradle durante a instalação.
  • IDE do Android Studio para desenvolvimento de apps Android.
  • Um dispositivo para executar o app Android. Uma das seguintes opções:
    • O Android Emulator. Exige configuração no Android Studio.
    • Um dispositivo Android físico conectado ao computador e configurado para o modo de desenvolvedor.
  • Uma Conta do Google para criar e gerenciar seu projeto do Firebase.

2. Etapas da configuração

Buscar 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 exemplo de código será clonado no diretório fcm-codelab.

cd fcm-codelab

O app inicial para este codelab está no diretório messaging da ramificação fcm-topics-codelab. Siga as etapas abaixo para acessar o código inicial. Ele contém dois diretórios, StockNewsApp e StockNewsServer. O primeiro contém o app Android inicial e o segundo tem o código inicial do lado do servidor.

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

A versão concluída 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 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 que preferir.

fc08f9a7808e4553.png

  1. Você pode pular a ativação do Google Analytics. Para os fins 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 app do Firebase específica da plataforma

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

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

Neste codelab, vamos adicionar um app Android do Firebase.

84e0b3199bef6d8a.pngConfigurar o Android

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

A seguinte caixa de diálogo será exibida : 8254fc299e82f528.png

  1. O valor importante a ser fornecido é o Nome do pacote Android. Defina-o como com.ticker.stocknews.
    1. O nome do pacote informado aqui precisa ser o mesmo informado no AndroidManifest.xml do código inicial de StockNewsApp. Se 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, encontre 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 Nome do pacote Android.
  2. O Certificado de assinatura de depuração SHA-1 não é necessário para este codelab porque o app não será lançado. Deixe em branco.
  3. Clique em Registrar app.
  4. Ainda no Console do Firebase, siga as instruções para fazer o download do arquivo de configuração google-services.json.
  5. Você pode pular as etapas restantes de configuração, porque todo o restante já está definido no código inicial do app. Você encontrará seu aplicativo listado na página principal do console do Firebase.
  6. Copie o arquivo google-services.json que você acabou de transferir por download para o diretório messaging/fcm-topics-codelab/starter/StockNewsApp/app.

4. Criar e executar seu app

Você já pode começar a trabalhar no seu app. Primeiro, crie e execute o app.

Importar o app inicial

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

Após o carregamento do projeto, talvez você veja um alerta informando que o Git não está rastreando todas as alterações locais. Clique em Ignorar ou no X no canto superior direito. Você não enviará alterações de volta para o repositório Git.

No canto superior esquerdo da janela do projeto, você verá algo parecido com a imagem abaixo se estiver na visualização Android. Se você estiver na visualização Project, expanda o projeto para ver a mesma coisa.

b574ea0089ee87c6.png

O Android Studio pode levar vários segundos para compilar o projeto em segundo plano pela primeira vez. Durante esse período, um ícone de carregamento vai aparecer na barra de status na parte de baixo do Android Studio:

4bc64eb3b99eb0ae.png

Recomendamos aguardar a conclusão desse processo antes de fazer alterações no código. Isso permitirá que o Android Studio extraia todos os componentes necessários.

Além disso, se você receber uma mensagem com a mensagem "Atualizar para que as alterações de idioma entrem em vigor?" ou algo semelhante, selecione "Sim".

Configuração do emulador

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

Entender o código inicial do app Android

  • O código inicial é um app Android leve com funcionalidade e interface mínimas.
  • Uma dependência do SDK do firebase-messaging já foi adicionada ao arquivo app/build.gradle.

f04ff8f48d186dff.png

  • No AndroidManifest.xml, um gerenciador de callback MESSAGING_EVENT já foi adicionado.
    • Esse gerenciador, 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 Monitorar a geração de tokens para mais informações.
    • A função onMessageReceived é chamada quando uma mensagem é recebida e o app está em primeiro plano. Atualmente, ele apenas registra a mensagem recebida.
  • Além disso, em AndroidManifest.xml, uma classe Application do Android também é fornecida com o nome StockNewsApplication. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Essa classe será a primeira a ser instanciada quando o app for iniciado.
    • Na função onCreate da classe StockNewsApplication, é adicionada uma chamada de criação de token de registro do FCM. Ele gera e registra um token de registro do FCM válido.
  • O MainActivity.java adiciona o RecyclerView que mostra as opções da categoria de estoque.
  • A SubscriptionAdapter.java implementa o RecyclerView.Adapter, que desenha a tela de seleção da categoria de estoque.
    • Cada categoria de estoque tem um nome e um botão de ativar a assinatura ao lado.
    • Mudar o botão deve fazer com que uma chamada de inscrição / cancelamento de assinatura de tópico do FCM seja feita.
    • Você vai implementar essas chamadas nas próximas seções.
  • A classe model/StockCategories.java contém uma lista de todas as categorias de estoque e os nomes dos tópicos associados.

b32663ec4e865a18.png

Executar o app inicial

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

5b27fc5b237e06b9.png

  1. A interface do app vai ficar assim:

ff5b1a1c53231c54.png

  1. O app criará um token de registro do FCM e o registrará. No entanto, nada vai mudar na interface do app.
    1. Copie e salve o token de registro do FCM, porque ele será usado nas próximas etapas.

927eb66bc909f36b.png

5. Enviar uma mensagem de teste

Agora está tudo pronto para enviar uma mensagem de teste à instância do app que você configurou na etapa anterior.

Importar o código inicial do servidor

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 será semelhante a esta:

da20711f6527dff6.png

Pode levar alguns minutos para que o IntellIj IDEA crie o projeto, inclusive as dependências necessárias.

Entender o código inicial do servidor

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

650fc733298588f8.png

  • Por fim, há duas classes, viz:
    • FcmSender.java: essa classe contém os seguintes métodos de observação:
      • initFirebaseSDK: inicializa o SDK do firebase-admin.
      • sendMessageToFcmRegistrationToken: envia uma mensagem para um token de registro do FCM.
      • sendMessageToFcmTopic: envia uma mensagem para um tópico do FCM.
      • sendMessageToFcmTopicCondition: envia uma mensagem para uma condição de tópico do FCM.
    • FcmSubscriptionManager.java: essa classe contém métodos que permitem gerenciar assinaturas de tópicos do lado do servidor.
      • initFirebaseSDK: inicializa o SDK do firebase-admin.
      • subscribeFcmRegistrationTokensToTopic: inscrever tokens de registro do FCM em um tópico do FCM.
      • unsubscribeFcmRegistrationTokensFromTopic: cancela a inscrição dos tokens de registro do FCM em um tópico do FCM.

Configurar o código do servidor

  1. Primeiro, precisamos configurar uma conta de serviço do Firebase que permita que o SDK firebase-admin autorize chamadas para APIs do FCM.
    1. Acesse o Console do Firebase, 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. Clique no botão Gerar nova chave privada para iniciar o download automático do arquivo de chave.
    4. Renomeie o arquivo de chave como service-account.json e copie na pasta messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources.
    5. Tanto FcmSender.java quanto FcmSubscriptionManager.java carregam o arquivo service-account.json do caminho de classe usando o código a seguir. 8dffbee658e0bdd.png
  2. Nesse ponto, o código do servidor está pronto. Execute Build -> Build Project na barra de menus superior.

Como enviar 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 app inicial no campo registrationToken.
  2. Na função main, remova a marca de comentário apenas da 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 message.
    2. Além disso, observe como usamos a API send da interface FirebaseMessaging.

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

  1. Quando a instância do app estiver em segundo plano, a mensagem será exibida na bandeja de notificações.

31203deca59c03fe.png

Muito bem! Você usou o SDK Admin do Firebase para enviar mensagens a uma instância de app. Leia mais sobre como usar o SDK Admin do Firebase no seu servidor.

6. Implementar inscrição / cancelamento de assinatura em tópicos

Nesta etapa, você vai implementar assinaturas de tópicos e ações de cancelamento de assinatura na opção "Stock Category" do app Android.

Quando um usuário do app alterna a chave para uma determinada categoria de estoque, uma chamada de assinatura de tópico ou de cancelamento da assinatura é feita.

Revisar código

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

6c0614199e684f6.png

  • O construtor da classe configura um listener para a alternância de assinaturas usando setOnCheckedChangeListener.
  • Dependendo da chave, as ações de inscrição e cancelamento de inscrição são realizadas chamando os métodos subscribeToStockCategory e unsubscribeFromStockCategory, respectivamente.
  • O método setData é chamado pelo onBindViewHolder do adaptador da RecyclerView para vincular o ViewHolder à 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 pode ser parecido com este:
   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 de assinatura em tópicos

  1. Da mesma forma, na condição else, você implementa a chamada para a API unsubscribeFromTopic. Algo como o 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 fazer um teste

  1. Execute o app e alterne as opções da categoria de estoque para executar as ações "Assinar" e "Cancelar inscrição". Ele será parecido com:

Inscreva-se

Cancelar inscrição

7. Enviando sua primeira mensagem de tema

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

Implementar a integração do lado do servidor para enviar mensagens de tópico

  1. No código do servidor, acesse FcmSender.java e localize o método com o nome sendMessageToFcmTopic.

56381dd1b40cde9c.png

  1. Na primeira linha, forneça o tópico do FCM para o qual deseja enviar a mensagem.
    • É uma string no formato: /topics/<Topic Name>. Por exemplo, /topics/Technology.
  2. Nas próximas linhas, crie um novo objeto message (semelhante ao definido na função sendMessageToFcmRegistrationToken).
    • A diferença será que, em vez de definir o campo Token do objeto message, você definirá 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 FirebaseMessaging para enviar a mensagem, que é 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

Enviar mensagem e validar a confirmação

  1. Antes de enviar a mensagem de tópico, verifique se a instância do seu aplicativo está inscrita no tópico que você quer enviar.
    1. Isso pode ser feito ao virar o botão de alternância correspondente. Exemplo:
    4668247408377712.png
  2. Agora você pode enviar a mensagem de tópico executando a função main de FcmSender.java.
  3. Como antes, deve ser possível observar o recebimento da mensagem na instância do aplicativo.
    1. Instância do app em primeiro plano
    c144721399f610fe.png
    1. Instância do app em segundo plano
    44efc7dfd57e8e9a.png
  4. Bônus: tente cancelar a inscrição no tópico para o qual você enviou e reenviar a mensagem. Você observaria que a mensagem não está sendo entregue à instância do aplicativo.

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

O recurso de condição de tópico permite o envio de mensagens para uma combinação de tópicos, o que permite fornecer uma definição de público mais expressiva.

Por exemplo, no nosso app StockNews, considere a possibilidade de enviar mensagens a um grupo de instâncias do app inscritas nos tópicos sobre tecnologia ou automotivo. Isso pode ocorrer, por exemplo, se houver um evento notável envolvendo a Waymo.

A API Topics permite expressar sua combinação na forma de uma expressão booleana usando os seguintes operadores:

  • && : AND lógico. Por exemplo, 'Technology' in topics && 'Automotive' in topics: segmenta apenas as instâncias do app inscritas em tecnologia e tópicos automotivos.
  • || : OR lógico. Por exemplo, 'Technology' in topics || 'Automotive' in topics: segmenta instâncias de apps inscritas nos tópicos sobre tecnologia ou automotivo.
  • () : parênteses para agrupamento. Por exemplo, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics): segmenta apenas instâncias de apps inscritas nos tópicos "Tecnologia" e "Automotivo" ou "Energia".

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

Implementar 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, acesse FcmSender.java e localize o método com o nome sendMessageToFcmTopicCondition.

3719a86c274522cf.png

  1. Na primeira linha, para a variável topicCondition, forneça a condição do tópico para o qual você quer enviar a mensagem. Você pode defini-la como: 'Technology' in topics && 'Automotive' in topics.
  2. Nas próximas linhas, crie um novo objeto message (semelhante ao definido na função sendMessageToFcmTopic).
    1. A diferença será que, em vez de definir o campo Topic do objeto, você 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 FirebaseMessaging para enviar a mensagem, que é idêntica à chamada de envio feita na função sendMessageToFcmTopic.
FirebaseMessaging.getInstance().send(message);
  1. Por fim, atualize a função main e ative a chamada apenas para a função sendMessageToFcmTopicCondition.

db9588d40d2a0da6.png

Enviar a mensagem e validar o recebimento

  1. Antes de enviar a mensagem do tópico, assegure-se de que a instância do app atenda à condição do tópico especificada inscrevendo a instância do app nos tópicos de tecnologia e automotivo.
  2. Agora você pode enviar a mensagem de tópico executando a função main de FcmSender.java.
  3. Como antes, você deve poder observar o recebimento da mensagem na instância do aplicativo.
    1. Instância do app em primeiro plano
    6f612ace15aa6515.png
    1. Instância do app em segundo plano
    78044a56ac2359cb.png
  4. Bônus: agora é possível cancelar a inscrição no tópico "Tecnologia" e reenviar a mensagem de condição do tópico. Observe que a mensagem não é recebida pela instância do app.

9. Recapitulação

Vamos recapitular rapidamente o que você aprendeu até agora.

  • Como iniciar uma assinatura de tópico / cancelamento de assinatura em uma instância de aplicativo.
  • Enviar uma mensagem ao tópico e verificar o recebimento nas instâncias de app inscritas.
  • Enviar uma mensagem para uma condição de tópico e verificar o recebimento em uma instância de app que satisfaça a condição.

Na próxima seção, você vai aprender a assinar / cancelar a inscrição de instâncias de apps em tópicos sem precisar instanciar chamadas do lado do cliente.

c0dc20655d392690.gif

10. Gerenciar inscrições de tópicos do lado do servidor

Até agora, neste codelab, todas as chamadas de inscrições e cancelamentos de assinatura de tópicos são iniciadas em uma instância do app.

No entanto, em alguns casos de uso, talvez você queira gerenciar as assinaturas de tópicos no lado do servidor. Por exemplo, é possível inscrever um subgrupo da sua base de usuários em um novo tópico sem esperar pelo lançamento de um app.

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

Implementar a assinatura do lado do servidor dos tokens de registro do FCM no tópico do FCM

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

5d5709e7b3cbcb04.png

  1. Vamos inscrever a instância do app 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ê quer criar assinaturas de tópicos.
    2. topicName: o nome do 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 algumas estatísticas de resultados de alto nível. Por exemplo, exibir o número de assinaturas de tópicos criadas usando getSuccessCount.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Por fim, na função main, ative chamadas apenas para a função subscribeFcmRegistrationTokensToTopic.

Criar assinatura e enviar mensagem do tópico

  1. Agora você pode criar a assinatura de tópico e enviar uma mensagem para ela.
  2. Execute a função main da classe FcmSubscriptionManager.java. Isso vai 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 como o tópico Energia, 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 ativar apenas a função sendMessageToFcmTopic.
  4. Execute a função main de FcmSender.java. Isso enviará a mensagem para a instância do seu aplicativo e você poderá observá-la no aplicativo da seguinte maneira.
    1. Instância do app em primeiro plano
    40ab6cf71e0e4116.png
    1. Instância do app em segundo plano
    8fba81037198209e.png

Implementar o cancelamento da assinatura dos tokens de registro do FCM no tópico do FCM

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

8d9e8ea9d34016bd.png

  1. A implementação do código de cancelamento de assinatura do lado do servidor e a validação do seu efeito enviando uma mensagem de tópico são deixadas como um exercício para você.

11. Parabéns

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

947def3eb33b1e4a.gif

A seguir

Agora que você concluiu o codelab, teste temas para outras plataformas usando estes guias:

Documentos de referência