Mensagens de tópico no Flutter

Com base no modelo de publicação/assinatura, as mensagens de tópicos do FCM permitem enviar uma mensagem a vários dispositivos que se inscreveram em determinado tópico. Você escreve as mensagens de tópicos conforme necessário e o FCM processa, de maneira confiável, o encaminhamento e a entrega delas aos dispositivos certos.

Por exemplo, os usuários de um app de previsão de marés podem se inscrever em um tópico de "alertas de correntes de maré" e receber notificações das melhores condições de pesca em água salgada em áreas específicas. Os usuários de um app sobre esportes podem se inscrever para receber atualizações automáticas de placares de jogos em tempo real dos times que mais gostam.

Alguns lembretes sobre os tópicos:

  • As mensagens de tópicos são mais adequadas a conteúdo de clima ou outras informações disponibilizadas publicamente.

  • As mensagens de tópicos são otimizadas para capacidade, não para latência. Para enviar mensagens com rapidez e segurança para apenas um dispositivo ou pequenos grupos de dispositivos, elas devem ser direcionadas para tokens de registro em vez de tópicos.

  • Se for necessário enviar mensagens a vários dispositivos por usuário, considere o envio de mensagens para grupos de dispositivos para esses casos de uso.

  • As mensagens de tópicos permitem um número ilimitado de assinaturas para cada tópico. No entanto, o FCM impõe limites nestas áreas:

    • Uma instância de app pode estar inscrita em no máximo 2.000 tópicos.
    • Se você estiver usando a importação em lote para inscrever instâncias de apps, cada solicitação estará limitada a 1.000 instâncias.
    • A frequência de novas assinaturas é limitada por projeto. Se muitas solicitações de assinatura forem enviadas em um curto período, você receberá uma resposta 429 RESOURCE_EXHAUSTED ("cota excedida") dos servidores do FCM. Tente novamente com espera exponencial.

Inscrever o app cliente em um tópico

Os apps cliente podem ser inscritos em qualquer tópico atual ou podem criar um novo tópico. Quando um app cliente for inscrito em um novo nome de tópico que ainda não existe no seu projeto do Firebase, um novo tópico com esse nome será criado no FCM e qualquer cliente poderá se inscrever nele posteriormente.

Para se inscrever em um tópico, chame subscribeToTopic() com o nome do tópico. Esse método retorna um Future, que resolve quando a assinatura é bem-sucedida:

await FirebaseMessaging.instance.subscribeToTopic("topic");

Para cancelar a inscrição, chame unsubscribeFromTopic() com o nome do tópico.

subscribeToTopic() e unsubscribeFromTopic() não são compatíveis com clientes da Web. Para saber como gerenciar assinaturas para usuários da Web, consulte Enviar mensagens para tópicos da Web/JavaScript.

Próximas etapas