首页 > 解决方案 > 发送云消息 (FCM) 多设备单用户

问题描述

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

FirebaseInstanceId.getInstance().getInstanceId()

纠正我如果我错了。

应用程序和支持的服务器运行良好,超出了我的工作流程

1-用户打开安卓应用。

2- Android 应用程序将用户令牌 ID 用于身份验证和设备令牌用于消息传递并将它们发送到服务器。

3-后端服务器通过验证用户

decodedToken = FirebaseAuth.getInstance().verifyIdToken(login.getToken()); 

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

发送消息工作正常,直到我坚持以下情况。

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

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

标签: androidfirebase-cloud-messaging

解决方案


您需要更改数据库并添加保存一位用户的所有设备令牌的功能。然后,您需要调用此 Firebase api https://fcm.googleapis.com/fcm/send的次数与用户拥有的令牌一样多。这里是官方文档。

https://firebase.google.com/docs/cloud-messaging/http-server-ref

要在客户端更改设备特定令牌时更新它,您还必须将该令牌与 deviceID 绑定,因此您需要在传递 Firebase 令牌时将 DeviceId 传递给服务器。由于 deviceID 可以提供 Android 唯一的 deviceID,或者在客户端提供 Firebase 的 id FirebaseInstanceId.getInstance().id。在这里如何获取Android deviceID

是否有唯一的 Android 设备 ID?

如果您access_token用于登录用户,作为另一种选择,您可以将 firebase 令牌与 user 绑定access_token,因为它对于用户登录的任何设备都是唯一的。


推荐阅读