发送云消息 (FCM) 多设备单用户
send cloud message (FCM) multiple devices single user
我有一个已经构建的应用程序。现在我想使用 FCM 在服务器和用户之间发送消息。
据我所知,每个设备都有自己的令牌,我可以用它来发送消息,这个令牌可以从
FirebaseInstanceId.getInstance().getInstanceId()
如果我错了请纠正我。
应用程序和支持的服务器运行良好,符合我的工作流程
1- 用户打开 android 应用程序。
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
Is there a unique Android device ID?
如果您使用 access_token
登录用户,作为另一种选择,您可以将 firebase 令牌与用户 access_token
绑定,因为它对于用户登录的任何设备都是唯一的。
我有一个已经构建的应用程序。现在我想使用 FCM 在服务器和用户之间发送消息。 据我所知,每个设备都有自己的令牌,我可以用它来发送消息,这个令牌可以从
FirebaseInstanceId.getInstance().getInstanceId()
如果我错了请纠正我。
应用程序和支持的服务器运行良好,符合我的工作流程
1- 用户打开 android 应用程序。
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
Is there a unique Android device ID?
如果您使用 access_token
登录用户,作为另一种选择,您可以将 firebase 令牌与用户 access_token
绑定,因为它对于用户登录的任何设备都是唯一的。