android - 发送云消息 (FCM) 多设备单用户
问题描述
我有一个已经构建的应用程序。现在我想使用 FCM 在服务器和用户之间发送消息。据我了解,每个设备都有自己的令牌,我可以用它来发送消息,并且可以从
FirebaseInstanceId.getInstance().getInstanceId()
纠正我如果我错了。
应用程序和支持的服务器运行良好,超出了我的工作流程
1-用户打开安卓应用。
2- Android 应用程序将用户令牌 ID 用于身份验证和设备令牌用于消息传递并将它们发送到服务器。
3-后端服务器通过验证用户
decodedToken = FirebaseAuth.getInstance().verifyIdToken(login.getToken());
然后它保存用于发送消息的令牌。
发送消息工作正常,直到我坚持以下情况。
该应用程序允许多个设备使用同一用户登录,这意味着 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,或者在客户端提供 Firebase 的 id FirebaseInstanceId.getInstance().id
。在这里如何获取Android deviceID
如果您access_token
用于登录用户,作为另一种选择,您可以将 firebase 令牌与 user 绑定access_token
,因为它对于用户登录的任何设备都是唯一的。
推荐阅读
- xcode - 应用在 TestFlight 上运行,但在 Appstore 上崩溃,我如何在发布前在 Appstore 上模拟确切的版本?
- java - Java CompletableFuture 得到它的请求
- java - 随机生成4张扑克牌:教科书用更长的代码?
- c# - 过滤器需要通过引用传递才能附加到它
- mysql - 循环子查询结果查询同一张表
- java - Project Reactor 将一个发布者分成两个,至少有两个订阅者
- java - 在 Byte Buddy 中禁用标识符验证
- python - 在 Python 中使用 Matplotlib 实现多个同步动画
- c++ - 计算 O(n) 中具有负积的子数组总数
- mongodb - 为什么 json.RawMessage 会放大 mongoDb 文件大小?