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