向多个设备发送云消息(FCM)单用户

时间:2020-04-08 18:22:41

标签: android firebase-cloud-messaging

我有一个已构建的应用程序。现在,我想使用FCM在服务器和用户之间发送消息。 据我了解,每个设备都有自己的令牌,可以用来发送消息,并且可以从

检索该令牌。
FirebaseInstanceId.getInstance().getInstanceId()

纠正我,如果我错了。

应用程序和支持的服务器运行良好,并且可以简化我的工作流程

1-用户打开android应用。

2- Android应用将用户令牌ID用于身份验证,并将设备令牌用于 发送消息并将其发送到服务器。

3-后端服务器通过

验证用户
decodedToken = FirebaseAuth.getInstance().verifyIdToken(login.getToken()); 

然后保存用于发送消息的令牌。

在我坚持以下方案之前,发送消息的工作正常。

该应用程序允许多个设备使用同一用户登录,这意味着1个USER可以具有多个令牌来进行消息传递。
在这种情况下,我想向该用户登录的所有设备发送消息。

那么如何在不更改我的应用程序当前设计的情况下做到这一点

1 个答案:

答案 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绑定,因为它对于用户登录的任何设备都是唯一的。