Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Refresh Token para vários dispositivos

Olá, tudo bem?

Pelo que entendi o Refresh Token identifica o dispositivo e possibilita que nosso backend ou via console web seja possível o envio de mensagens diretamente para esse dispositivo. Ex: quero mandar uma oferta ou um agradecimento diretamente para o usuário Pedro Garcia.

Para isso devemos armazenar esse token, enviando o para nosso backend e vinculando ao nosso usuário. Ex: Na tabela usuário uma coluna para armazenar tal token.

Agora minha duvida é a seguinte: imagine a situação em que o usuário pode estar vinculado a mais de um dispositivo. Ex: ele tem um smartphone e um tablet. E eu quero enviar essa mensagem para esse usuário e quero que ele receba em qualquer um desses dispositivos.

Nesse caso, eu imagino que vou ter dois tokens certo? Ou terei apenas um? A amarração do token é feita com o dispositivo ou com a conta do gmail do usuário?

Caso a amarração seja por dispositivo, acredito que nesse caso vou precisar associar uma lista de tokens ao usuário certo? Então no backend eu teria a tabela usuário e uma tabela para armazernar tokens, onde um usuário pode ter 1 ou mais tokens vinculados. Sendo assim, na hora de enviar a notificação eu devo enviá-la para essa lista de tokens desse usuário.

Gostaria de saber se estou certo nesse pensamento? Tenho que preocupar com mais alguma coisa?

2 respostas
solução!

Oi Bodão, blz?

Justamente por essa necessidade que você citou do usuário operar em mais de um dispositivo, na verdade armazenamos o token em uma entidade que vai representar os dispositivos do usuário, portanto, uma tabela de dispositivo que vai ter 1 único usuário e o usuário vai ter 0 ou mais dispositivos.

Inclusive, você pode até deixar essa entidade dispositivo mais interessante, colocando, por exemplo, o nome do dispositivo e seu token entre outras informações.

Além do token, o FCM também opera com uma outra técnica que pode ser interessante para esses casos que são as mensagens de tópico (topic). Basicamente, a notificação é enviada diretamente no tópico, ou seja, o backend nem precisa da referência dos tokens para enviar a mensagem, porém, é uma estratégia diferente na qual o client (app Android, por exemplo) vai se responsabilizar em se registrar e sair do tópico.

[]s

Alex, nesse caso vou ter as duas tabelas então: User e Device, em device vou registrar dados do dispositivo e o token do Firebase.

Valeu pelo help!