Tenho um aplicativo de mensagens iOS (Swift) em que um chat consiste em x usuários. Um único usuário pode fazer parte de muitos chats e as groupChats
coleções contêm todos os chats em grupo entre usuários para um aplicativo. O allUsersUID
é um array que contém os UIDs do Firebase de todos os usuários naquele chat. A texts
coleção contém todas as mensagens para o chat específico. Os usuários criam um novo documento nessa coleção quando enviam uma mensagem e ouvem a mesma coleção para novas mensagens de outros usuários.
Se o usuário X enviar uma nova mensagem para a texts
coleção, como uma notificação push (banner, push, alerta) pode ser enviada aos usuários A, B, C, o usuário X pode enviar essa notificação programaticamente para todos os outros usuários? Eu li este tópico do SO , mas a resposta era de 2018 e parece desatualizada.
O Firebase Cloud Messaging não tem conhecimento dos seus usuários, então você terá que fazer essa conexão no aplicativo.
A abordagem mais comum para isso é obter o token FCM para cada usuário em cada dispositivo e armazenar esses tokens por usuário em um banco de dados (às vezes chamado de registro de token ). Então, quando você quiser notificar um usuário, leia os tokens do dispositivo dele no registro e chame a API para enviar uma mensagem para esses tokens . Esse envio de uma mensagem precisa acontecer em um ambiente confiável, como um servidor que você controla ou algo como Cloud Run/Cloud Functions.
Além dos links que forneci acima, também recomendo a leitura das práticas recomendadas da documentação do Firebase para gerenciamento de tokens de registro do FCM .