我在 Google Firebase 云消息传递和发送通知方面遇到一些奇怪的问题:
Android 应用程序正在通过 FCM 接收通知。它安装在一名用户的两台设备(智能手机和平板电脑)上。他在两台设备上使用相同的 Google 帐户。
两个应用程序安装都有其独特的 FCM 令牌。
我的问题:我无法成功向两个 FCM 令牌发送通知! 仅发送到一个令牌成功,发送到其他令牌返回 404“未注册”。
应用程序中的 getToken() 始终返回相同的令牌。 哪个设备/令牌可以接收通知会不时发生变化,要么是设备 1,要么是设备 2。我进一步调查了该行为,可以看到以下内容:
我的问题:
根据 Google 文档,返回“404 未注册”的令牌将永远不再有效?我可以看到不同的行为?!
为什么我无法向 Android 应用程序中 getToken() 返回的令牌发送通知?
Google 帐户中的多个设备之间是否存在 FCM 连接?
有人对这个话题有一些想法吗?
我遇到了同样的问题,解决方法如下:
每当用户从任何设备登录时,我都会检索他们的 FCM(Firebase 云消息传递)令牌并将其存储在 Firebase 中名为“fcmTokens”的集合中。我使用用户的电子邮件或 UID 作为标识符来管理我应该向谁发送通知。我为每个用户存储多个 FCM 令牌,并使用循环向一个人的所有设备发送通知。
例如: 在我的 firebase 中,我像这样存储了 fcm 令牌
fcmTokens (collection)
- UID/Email (document)
- fcm token 1 (field)
- fcm token 2 (field)
这就是我保存多个 FCM 令牌,然后使用循环检索特定用户的令牌并向每个令牌发送通知的方式。
提示: 当用户从任何设备注销时,我会在注销功能中删除该设备的 FCM 令牌。