1. Introdução
Metas
Neste codelab, você aprenderá como instrumentar seu aplicativo multiplataforma para poder enviar mensagens push multicast para vários subgrupos de instâncias de seu 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 forma compatível com a infraestrutura do FCM de alcançar subgrupos de suas instâncias de aplicativo com mensagens.
O FCM fornece as APIs para enviar mensagens, bem como manter assinaturas para esses tópicos. O ato de associar e dissociar uma instância de aplicativo ao tópico é chamado de assinatura e cancelamento de 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 Firebase Admin SDK para mensagens multicast em vários dispositivos .
O multicast baseado em tópicos é otimizado para taxa de transferência.
O que você aprenderá
- Como inscrever (e cancelar) usuários 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 se inscreve/desinscreve em tópicos e recebe mensagens quando enviadas para os tópicos.
- Uma integração do lado do servidor usando o Firebase Admin SDK, que será usado para enviar mensagens de tópico 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 configurado para o modo de desenvolvedor.
- Uma conta do Google para criar e gerenciar seu projeto Firebase.
2. Preparando-se
Obtenha o código
Clone o repositório 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 messaging
da ramificação fcm-topics-codelab
. Siga os seguintes passos 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
- 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 seu projeto Firebase (ou clique no ícone Editar para definir seu ID de projeto preferido).
- Você pode pular a ativação do Google Analytics. Para os propósitos deste codelab, você não precisa dele. Clique em Continuar.
- 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 habilitar o suporte do Firebase já foram verificadas no projeto em que você está trabalhando. No entanto, para adicionar suporte para plataformas móveis, você precisa:
- Cadastre a plataforma desejada no projeto Firebase
- Baixe o arquivo de configuração específico da plataforma e adicione-o ao código.
Para este codelab, adicionaremos um app Firebase para Android.
Configurar Android
- 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ê deve ver a seguinte caixa de diálogo:
- O valor importante a ser fornecido é o nome do pacote Android . Defina-o como
com.ticker.stocknews
.- O nome do pacote fornecido aqui deve ser o mesmo fornecido no
AndroidManifest.xml
do código StockNewsApp inicial. Se você deseja localizá-lo ou alterá-lo, siga estas etapas:- No diretório StockNewsApp , abra o arquivo
app/src/main/AndroidManifest.xml
. - No elemento
manifest
, localize o valor da string do atributopackage
. Esse valor é o nome do pacote Android.
- No diretório StockNewsApp , abra o arquivo
- O nome do pacote fornecido aqui deve ser o mesmo fornecido no
- Na caixa de diálogo Firebase, cole o nome do pacote copiado no campo Android package name .
- Você não precisa do certificado de assinatura de depuração SHA-1 para este codelab, porque este app não será lançado. Deixe em branco.
- Clique em Registrar aplicativo .
- Continuando no Firebase Console, siga as instruções para baixar o arquivo de configuração
google-services.json
. - 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.
- Copie o arquivo
google-services.json
(que você acabou de baixar) para o diretóriomessaging/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, crie 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.
Após o carregamento do projeto, você também pode 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ê deve 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)
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 controle giratório na barra de status na parte inferior do Android Studio:
Recomendamos que você espere até que isso termine 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 dizendo "Recarregar 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 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 do firebase-messaging já foi adicionada ao arquivo
app/build.gradle
.
- No
AndroidManifest.xml
, um manipulador de retorno de chamadaMESSAGING_EVENT
já foi adicionado.- Esse manipulador,
StockNewsMessagingService.java
, estende a classeFirebaseMessagingService
, que fornece várias funcionalidades relacionadas ao Firebase Cloud Messaging. Consulte a documentação do FirebaseMessagingService para saber mais.
- A função
onNewToken
é chamada quando o token de registro FCM é criado ou atualizado. Consulte Monitorar geração de token 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.- Consulte Receber mensagens em um aplicativo Android para saber mais sobre as diferenças entre a entrega e o tratamento de mensagens em segundo plano e em primeiro plano.
- Esse manipulador,
- Além disso, em
AndroidManifest.xml
, uma classe AndroidApplication
também é fornecida chamadaStockNewsApplication
.- Esta classe será a primeira a ser instanciada na inicialização do App.
- Na função
onCreate
da classeStockNewsApplication
é adicionada uma chamada de criação do FCM Registration Token. Ele irá gerar um token de registro FCM válido e registrá-lo.
- O
MainActivity.java
adiciona oRecyclerView
que exibe as opções de categoria de estoque. -
SubscriptionAdapter.java
implementaRecyclerView.Adapter
que desenha a tela de seleção de categoria de estoque.- Cada categoria de ações tem um nome e um botão de assinatura próximo a ela.
- 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 estoque e seus nomes de tópicos associados.
Execute o aplicativo inicial
- Conecte seu dispositivo Android ao computador ou inicie um emulador.
- Na barra de ferramentas superior, selecione o dispositivo ou emulador Android de destino e pressione o botão Executar.
- A interface do usuário do aplicativo terá a seguinte aparência:
- O aplicativo criará um token de registro do FCM e o registrará. No entanto, nada mudará na interface do usuário do aplicativo.
- Copie e salve o token de registro do FCM, pois ele será usado nas próximas etapas.
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.
Importe 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 semelhante a esta:
Observe que pode levar alguns minutos para o Intellij IDEA construir seu projeto, incluindo puxar as 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.
- Finalmente, existem duas classes, a saber:
-
FcmSender.java
: Esta 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 FCM. -
sendMessageToFcmTopic
: envia uma mensagem para um tópico FCM. -
sendMessageToFcmTopicCondition
: envia uma mensagem para uma condição de tópico 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 firebase-admin. -
subscribeFcmRegistrationTokensToTopic
: inscreve Token(s) de registro FCM em um tópico FCM. -
unsubscribeFcmRegistrationTokensFromTopic
: cancela a assinatura de token(s) de registro FCM de um tópico FCM.
-
-
Configurando o código do servidor
- Primeiro, precisamos configurar uma conta de serviço do Firebase que permita que o SDK do firebase-admin autorize chamadas para APIs do FCM.
- 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 .
- Na página de configurações, selecione Contas de serviço e clique em Criar conta de serviço .
- Agora clique no botão Gerar nova chave privada e um download automático do seu arquivo de chave será iniciado.
- Renomeie o arquivo de chave para
service-account.json
e copie-o na pastamessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. -
FcmSender.java
eFcmSubscriptionManager.java
carregam o arquivoservice-account.json
do caminho de classe usando o código a seguir.
- 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 .
- Neste ponto, o código do servidor está pronto. Execute Build -> Build Project na barra de menu superior.
Enviando uma mensagem de teste
- Em
FcmSender.java
localize a funçãosendMessageToFcmRegistrationToken
e insira o token de registro FCM que você copiou da seção Run the starter app no camporegistrationToken
. - Na função
main
, descomente apenas a funçãosendMessageToFcmRegistrationToken
e clique em executar para executar o código.- Observe como o Token de Registro do FCM é definido no campo
Token
do objetomessage
. - Além disso, observe como usamos a API
send
da interfaceFirebaseMessaging
.
- Observe como o Token de Registro do FCM é definido no campo
- Isso deve enviar uma mensagem para a instância do aplicativo que você configurou na etapa anterior.
- Quando a instância do aplicativo estiver em primeiro plano, você verá o conteúdo da mensagem registrado.
- E quando a instância do aplicativo estiver em segundo plano, você observará a mensagem aparecer na bandeja de notificações.
Incrível, você usou o Firebase Admin SDK para enviar mensagens para uma instância de aplicativo. Leia mais sobre como usar o Firebase Admin SDK em seu servidor .
6. Implementar assinatura/cancelamento de tópico
Nesta etapa, você implementará as ações de assinatura e cancelamento de tópico, na alternância Categoria de ações do aplicativo Android.
Quando um usuário do aplicativo alterna a opção para uma determinada categoria de estoque, uma chamada de assinatura ou cancelamento de assinatura de tópico será feita.
Código de revisão
- Navegue até a classe
SubscriptionAdapter.java
no código do aplicativo Android e localize a classeRecyclerViewViewHolder
.
- O construtor de classe configura um ouvinte para a alternância de assinatura usando
setOnCheckedChangeListener
. - Dependendo da alternância de alternância, as ações de assinatura e cancelamento de assinatura são executadas chamando os métodos
subscribeToStockCategory
eunsubscribeFromStockCategory
, respectivamente. - O método
setData
é chamado peloonBindViewHolder
do adaptador RecyclerView para vincular o ViewHolder à categoria de estoque apropriada.
Implementar assinatura de tópico
- No método
subscribeToStockCategory
, você implementará a chamada à APIsubscribeToTopic
do objetoFirebaseMessaging
. O código poderia ser algo como isto:
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 cancelamento de assinatura de tópico
- 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 experimentar
- Execute o aplicativo e alterne as opções de categoria de estoque para executar ações de assinatura e cancelamento de assinatura. Seria mais ou menos 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 FCM.
Implementar integração do lado do servidor para enviar mensagem de tópico
- No código do servidor, pule para
FcmSender.java
e localize o método chamadosendMessageToFcmTopic
.
- Na primeira linha, forneça o Tópico FCM para o qual você deseja enviar a mensagem.
- É uma string no formato:
/topics/<Topic Name>
. Por exemplo,/topics/Technology
.
- É uma string no formato:
- Nas próximas linhas crie um novo objeto
message
(semelhante ao definido na funçãosendMessageToFcmRegistrationToken
).- A diferença será que ao invés de configurar o campo
Token
do objetomessage
, você irá configurar o campoTopic
.
- A diferença será que ao invés de configurar o campo
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();
- Agora adicione a chamada à instância
FirebaseMessaging
para enviar a mensagem (idêntica à chamada send feita na funçãosendMessageToFcmRegistrationToken
).
FirebaseMessaging.getInstance().send(message);
- Por fim, atualize a função
main
e habilite a chamada apenas para a funçãosendMessageToFcmTopic
.
Enviar mensagem e validar recebimento
- 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.
- Isso pode ser feito com um flip da alternância correspondente. Por exemplo:
- Agora você pode enviar sua mensagem de tópico executando a função
main
deFcmSender.java
. - Como antes, você poderá observar o recebimento da mensagem na instância do aplicativo.
- Instância do aplicativo em primeiro plano
- Instância do aplicativo em segundo plano
- Bônus: tente cancelar a assinatura do 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 de 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 App StockNews, considere a possibilidade de enviar mensagens para um grupo de instâncias do app que são assinantes de temas de Tecnologia ou Automotivo. Tal caso pode ocorrer, por exemplo, se houver um evento digno de nota 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
- Destina-se apenas às instâncias de aplicativo que estão inscritas em Tópicos de tecnologia e 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)
- Destina-se apenas a instâncias de aplicativos que estão inscritas em tópicos de 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 mensagens de condição de tópico
- De volta ao código do servidor, salte para
FcmSender.java
e localize o método chamadosendMessageToFcmTopicCondition
.
- Na primeira linha, para a variável
topicCondition
, forneça a condição do tópico para a qual deseja enviar a mensagem. Você pode configurá-lo para:'Technology' in topics && 'Automotive' in topics
. - Nas próximas linhas, crie um novo objeto
message
(semelhante ao definido na funçãosendMessageToFcmTopic
).- A diferença será que ao invés de configurar o campo
Topic
do objeto, você irá configurar o campoCondition
.
- A diferença será que ao invés de configurar o campo
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();
- Agora adicione a chamada à instância
FirebaseMessaging
para enviar a mensagem (idêntica à chamada send feita na funçãosendMessageToFcmTopic
).
FirebaseMessaging.getInstance().send(message);
- Por fim, atualize a função
main
e ative a chamada apenas para a funçãosendMessageToFcmTopicCondition
.
Envie a mensagem e valide o recebimento
- Antes de enviar a mensagem do tópico, primeiro assegure-se de que a instância do aplicativo satisfaça a condição do tópico especificada, inscrevendo a instância do aplicativo nos tópicos Tecnologia e Automotivo.
- Agora você pode enviar sua mensagem de tópico executando a função
main
deFcmSender.java
. - Como antes, você poderá observar o recebimento da mensagem na instância do aplicativo.
- Instância do aplicativo em primeiro plano
- Instância do aplicativo em segundo plano
- 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 assinadas.
- 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á como pode inscrever/cancelar a inscrição de instâncias de aplicativos em tópicos sem precisar instanciar chamadas do lado do cliente.
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 app.
No entanto, em alguns casos de uso, você pode querer gerenciar as assinaturas de tópico 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 Firebase Admin SDK 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.
Implemente a assinatura do lado do servidor de tokens de registro FCM para o tópico FCM
- No código do servidor, salte para a classe
FcmSubscriptionManager.java
. Localize o método chamadosubscribeFcmRegistrationTokensToTopic
. Você implementará a chamada para a APIsubscribeToTopic
aqui.
- Vamos inscrever a instância do aplicativo no tópico Energia. Para fazer isso, primeiro forneça dados para os dois campos a seguir:
-
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. -
topicName
: o nome do tópico para o tópico Energia, ou seja/topics/Energy
.
-
- Nas próximas linhas implemente a chamada, seguindo estas linhas:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Você pode inspecionar o
TopicManagementResponse
para algumas estatísticas de resultado de alto nível. Como imprimir o número de assinaturas de tópicos criadas com êxito usandogetSuccessCount
.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Por fim, na função
main
, habilite chamadas apenas para a funçãosubscribeFcmRegistrationTokensToTopic
.
Criar assinatura e enviar mensagem de tópico
- Neste ponto, você está pronto para criar a assinatura do tópico e enviar uma mensagem para ele.
- Execute a função
main
da classeFcmSubscriptionManager.java
. Isso criará uma assinatura de tópico. - Agora, configure o código para enviar a mensagem. Semelhante a antes,
- No
FcmSender.java
, localize a funçãosendMessageToFcmTopic
. - Defina o
topicName
para o tópico Energy, ou seja,/topics/Energy
. - Crie um objeto
Message
e direcione-o para o tópico usandosetTopic
. - Por fim, atualize o método
main
para habilitar apenas a funçãosendMessageToFcmTopic
.
- No
- Execute a função
main
deFcmSender.java
. Isso enviará a mensagem para a instância do aplicativo e você poderá observá-la no aplicativo da seguinte maneira.- Instância do aplicativo em primeiro plano
- Instância do aplicativo em segundo plano
Implemente o cancelamento da assinatura do lado do servidor de tokens de registro FCM para o tópico FCM
- Para cancelamentos de assinaturas de tópicos do lado do servidor, use esta API
unsubscribeFromTopic
. Você adicionará o código relevante à funçãounsubscribeFcmRegistrationTokensFromTopic
da classeFcmSubscriptionManager.java
.
- Implementar o código de cancelamento de assinatura do lado do servidor e validar seu efeito enviando uma mensagem de tópico é deixado como um exercício para você.
11. Parabéns
Parabéns, você usou tópicos FCM com sucesso para enviar mensagens multicast para subgrupos de suas instâncias de aplicativo. Isso ajudará a simplificar sua capacidade de alcançar seus usuários em tempo hábil com conteúdo relevante.
Qual é o próximo?
Agora que você concluiu seu codelab, experimente os tópicos para outras plataformas usando os seguintes guias: