我的客户端应用程序在多个设备上安装了Android。 我也有我的服务器应用程序,可以向这些应用程序发送消息。 问题是某些设备会收到消息,而其他设备则不会。 向这些设备发送消息时,我收到错误">不匹配发件人 ID"。
我划分了问题,因此我打开 firebase 控制台并向我的应用发送通知(我有每个应用的令牌)。因此,使用控制台应用程序,我在使用服务器的相同设备上收到错误。但正如我所说,每台设备都使用相同的应用程序。
有什么帮助吗?
首先,我要指出MismatchSenderId
错误的描述:
注册令牌绑定到特定的一组发件人。当客户端应用注册 FCM 时,它必须指定允许哪些发件人发送消息。向客户端应用发送消息时,应使用这些发件人 ID 之一。如果切换到其他发件人,则现有注册令牌将不起作用。
根据我们的讨论,有人指出您创建了一个新的Firebase项目,而不是导入用于GCM的Google项目。从新项目中,google-services.json被生成并用于应用程序,这导致新令牌与新项目的发件人ID相关联。要正确可视化它:
-
GCM 注册令牌>仅接收来自 Google Project>的消息(1st)
-
新令牌>仅接收来自 Firebase> 项目(第 2 版)的消息
作为解决方案,我建议您将Google项目导入Firebase控制台,从该项目生成google-services.json,并将应用程序中的Google-services.json替换为该应用程序,它将应用程序与该(正确的)项目相关联。这反过来又创建了现在与您的第一个项目关联的代币。
-
GCM 注册令牌>仅接收> Google Project 的消息(第 1 个)
-
新令牌>现在接收消息>
Firebase Project (2nd) 导入的谷歌项目 (1st)
希望这是有道理的。
值得一提的是:
-
应用更改后,您提到错误仍然存在,但这是一个不同的问题,只需使用服务器密钥即可修复。
-
在讨论期间链接了帖子。
支持@AL的答案,基本上您需要在所有设备上卸载该应用程序并重新安装该应用程序,以便所有设备都收到与新连接的Firebase项目数据库相对应的新令牌。
需要在 Google 控制台中启用以下 API (https://console.cloud.google.com/)
Firebase Cloud Messaging API 云消息传递
然后您的发件人 ID 将被识别