我正试图通过Node.js服务器在我的
Android应用程序中实现Firebase云消息传递,并且我已经陷入了一个用例.
我看到了使用注册令牌创建设备组的Firebase教程,以便在登录相同用户的情况下向所有设备发送消息/通知,我不明白当其中一个注册令牌被onTokenRefresh()方法刷新时会发生什么.
如何区分要更改的令牌,因为所有令牌都属于同一个用户?
更新:
好的,所以现在我又陷入了另一个阻塞用例.我正在创建一个由我的服务器中的用户ID标识的用户组.如果用户立即卸载并重新安装应用程序而另一个用户登录设备,如果我在之前的用户组上调用gcm消息,则此设备仍会收到该消息.
解决方法
所以我一直在考虑如何使用这种情况.首先,让我们在调用
onRefreshToken()时放入实例:
This will not be called very frequently,it is needed for key rotation and to handle Instance ID changes due to:
- App deletes Instance ID
- App is restored on a new device
- User uninstalls/reinstall the app
- User clears app data
猜猜一下,你可以说’onTokenRefresh()`将在上面发生之后被调用,如果设备在线(当然它必须在线以获得新的令牌).所以我猜这是我如何继续这个场景:
首先,在注册时,我会保存注册令牌并将其与另一个标识符配对,假设我的App Server中有一个deviceId(因为我们处于具有多个设备的用户的场景中).
因此,假设我添加了3个注册令牌,这些令牌也与他们的deviceIds配对.我将它们全部添加到设备组.
现在说其中一个设备触发onTokenRefresh(),我会立即向我的App Server发送一个删除请求,用于当前与该deviceId配对的注册令牌(您还应该在它连接到的任何设备组中将其删除) ),用新的替换它,然后将其重新添加到相应的设备组.