我有一个已构建的应用程序。现在,我想使用FCM在服务器和用户之间发送消息。 据我了解,每个设备都有自己的令牌,可以用来发送消息,并且可以从
检索该令牌。FirebaseInstanceId.getInstance().getInstanceId()
纠正我,如果我错了。
应用程序和支持的服务器运行良好,并且可以简化我的工作流程
1-用户打开android应用。
2- Android应用将用户令牌ID用于身份验证,并将设备令牌用于 发送消息并将其发送到服务器。
3-后端服务器通过
验证用户decodedToken = FirebaseAuth.getInstance().verifyIdToken(login.getToken());
然后保存用于发送消息的令牌。
在我坚持以下方案之前,发送消息的工作正常。
该应用程序允许多个设备使用同一用户登录,这意味着1个USER可以具有多个令牌来进行消息传递。
在这种情况下,我想向该用户登录的所有设备发送消息。
那么如何在不更改我的应用程序当前设计的情况下做到这一点
答案 0 :(得分:1)
您需要更改数据库并添加保存一个用户的所有设备令牌的功能。然后,您需要调用此Firebase api https://fcm.googleapis.com/fcm/send的次数与令牌用户拥有的次数相同。这里是官方文档。
https://firebase.google.com/docs/cloud-messaging/http-server-ref
要在客户端更改设备特定令牌时更新该令牌,还必须将该令牌与deviceID绑定,以便在传递Firebase令牌时需要将DeviceId传递给服务器。由于deviceID可以提供Android唯一的deviceID,也可以提供客户端FirebaseInstanceId.getInstance().id
中提供Firebase的ID。这里是如何获取Android deviceID
Is there a unique Android device ID?
如果您使用access_token
登录用户,则可以将Firebase令牌与用户access_token
绑定,因为它对于用户登录的任何设备都是唯一的。