it-swarm-pt.tech

Firebase Cloud Messaging - Gerenciando tokens de registro

Estou pensando em implementar mensagens entre aplicativos móveis e de navegador usando o Firebase Cloud Messaging e tenho algumas perguntas que os documentos parecem não responder.

Para poder receber mensagens, você precisa de um token de registro (RT). As mensagens podem ser enviadas para um RT, para um tópico ou para um grupo de dispositivos notification_key. O RT também pode ser usado:

  • diretamente
  • para se inscrever em um tópico
  • para adicionar a um grupo de dispositivos

O RT também pode expirar/alterar.

No meu aplicativo, estou mantendo uma lista de RT por usuário. Agora, quando o RT muda:

  1. Preciso cancelar a assinatura do token antigo e inscrever o novo token nos tópicos?
  2. Preciso remover o token antigo e adicionar o novo token aos grupos de dispositivos?
  3. É possível obter informações sobre grupos/tópicos de dispositivos para um token?
  4. Posso adicionar um token a um grupo de dispositivos mais de uma vez?
  5. Posso assinar um token para um tópico mais de uma vez?
  6. Várias assinaturas/adições do mesmo token resultarão no recebimento de mensagens duplicadas

Desculpe, são muitas perguntas, mas acho que, para alguém que já passou por isso, deve ser torta;)

22
Ralf Bokelberg
  1. Preciso cancelar a assinatura do token antigo e inscrever o novo token nos tópicos?

AFAIK, você não precisa cancelar a assinatura do token antigo, pois ele será descartado pelo próprio FCM. Para o novo token, sim, você deverá assiná-lo no tópico de que precisa. O usual é feito (no Android), com subscribeToTopic() em onTokenRefreshed().


  1. Preciso remover o token antigo e adicionar o novo token aos grupos de dispositivos?

Sim. Você precisa lidar com o mapeamento/relacionamentos do Sistema de Mensagens do Grupo. Veja minha resposta aqui . Isso é diferente dos tópicos. O token será invalidado, mas será mantido como parte da lista de tokens de registro da chave de registro correspondente.

É por isso que existe a possibilidade de receber um erro NotRegistred em um dos tokens se você enviar para o Grupo de dispositivos. :)


  1. É possível obter informações sobre grupos/tópicos de dispositivos para um token?

Para mensagens do grupo de dispositivos (o mesmo com o nº 2), o desenvolvedor (você) precisa gerenciar esses detalhes por conta própria. Para tópicos, você pode usar o InstanceID API . Especificamente, defina o parâmetro details como true:

[opcional] booleano details: defina este parâmetro de consulta como true para obter detalhes disponíveis do token IID, incluindo informações de conexão e informações de assinatura de tópico do FCM ou GCM (se houver) para o dispositivo associado a este token . Quando não especificado, o padrão é false.


  1. Posso adicionar um token a um grupo de dispositivos mais de uma vez?

Ahmm. Sim. Você quer dizer o mesmo token? Nesse caso, ainda não tentei. Também pode fazer algumas verificações no lado do cliente antes de adicionar.


  1. Posso assinar um token para um tópico mais de uma vez?

Se você quer se inscrever novamente, então sim. Se você quer dizer duplicar a solicitação de inscrição, acho que o resultado ainda seria um sucesso. Não há mudanças no comportamento.


  1. Várias assinaturas/adições do mesmo token resultarão no recebimento de mensagens duplicadas?

Testei isso. Você não receberá mensagens duplicadas para assinaturas de tópicos duplicadas nem para adicionar o mesmo token a um grupo de dispositivos. Parece que o FCM ignora a solicitação de inscrição/adição de um token de registro, se já estiver inscrito/adicionado a um grupo de dispositivos.

24
AL.