Com base no modelo de publicação/assinatura, as mensagens de tópico do FCM permitem enviar uma mensagem para vários dispositivos que aceitaram um tópico específico. Você redige mensagens de tópico conforme necessário e o FCM cuida do roteamento e da entrega da mensagem de maneira confiável aos dispositivos certos.
Por exemplo, os usuários de um aplicativo local de previsão de marés podem optar por um tópico de “alertas de correntes de maré” e receber notificações sobre condições ideais de pesca em água salgada em áreas específicas. Os usuários de um aplicativo de esportes podem assinar atualizações automáticas de resultados de jogos ao vivo de seus times favoritos.
Algumas coisas para ter em mente sobre os tópicos:
As mensagens de tópico são mais adequadas para conteúdos como previsão do tempo ou outras informações disponíveis publicamente.
As mensagens do tópico são otimizadas para rendimento em vez de latência . Para uma entrega rápida e segura para dispositivos únicos ou pequenos grupos de dispositivos, direcione as mensagens para tokens de registro e não para tópicos.
Se você precisar enviar mensagens para vários dispositivos por usuário , considere enviar mensagens de grupo de dispositivos para esses casos de uso.
As mensagens de tópico oferecem suporte a assinaturas ilimitadas para cada tópico. No entanto, a FCM impõe limites nestas áreas:
- Uma instância de aplicativo não pode ser inscrita em mais de 2.000 tópicos.
- Se você estiver usando a importação em lote para assinar instâncias de aplicativos, cada solicitação será limitada a 1.000 instâncias de aplicativos.
- A frequência de novas assinaturas é limitada por taxa por projeto. Se você enviar muitas solicitações de assinatura em um curto período de tempo, os servidores FCM responderão com uma resposta
429 RESOURCE_EXHAUSTED
("cota excedida"). Tente novamente com espera exponencial.
Inscrever o aplicativo cliente em um tópico
Os aplicativos cliente podem assinar qualquer tópico existente ou podem criar um novo tópico. Quando um aplicativo cliente assina um novo nome de tópico (um que ainda não existe para seu projeto do Firebase), um novo tópico com esse nome é criado no FCM e qualquer cliente pode subscrevê-lo posteriormente.
Para assinar um tópico, chame subscribeToTopic()
com o nome do tópico. Este método retorna um Future
, que é resolvido quando a assinatura foi bem-sucedida:
await FirebaseMessaging.instance.subscribeToTopic("topic");
Para cancelar a assinatura, chame unsubscribeFromTopic()
com o nome do tópico.
subscribeToTopic()
e unsubscribeFromTopic()
não são suportados para clientes web. Para saber como gerenciar assinaturas para usuários da web, consulte Enviar mensagens para tópicos na Web/JavaScript .
Próximos passos
- Aprenda como enviar mensagens de tópico .
- Aprenda como gerenciar assinaturas de tópicos no servidor .