【问题标题】:Firebase FCM MismatchSenderIDFirebase FCM 不匹配SenderID
【发布时间】:2017-05-10 23:29:57
【问题描述】:

我在多台设备上安装了我的 Android 客户端应用程序。 我还有我的服务器应用程序,可以向这些应用程序发送消息。 问题是某些设备会收到消息,而其他设备则不会。 将消息发送到这些设备时,我收到错误“MismatchSenderId”。

我划分了问题,所以我打开了 firebase 控制台并向我的应用程序发送通知(我有每个应用程序的令牌)。因此,使用控制台应用程序,我在使用我的服务器的相同设备上遇到错误。但正如我所说,每台设备都在使用同一个应用程序。

原因有什么帮助吗?

【问题讨论】:

  • 嗨吨。在您的应用程序开发过程中是否有任何变化,您不得不更改发送者项目?如果您在特定令牌上看到这一点,您是否检查过它们是否存在模式(例如应用程序/操作系统版本)?目前的细节很难评论任何事情。
  • 嗨。谢谢。 “更改发件人项目”是什么意思?
  • 嗨。我的意思是使用了不同的 Firebase 项目(因此更改了发件人项目)。
  • 我可以试试。我的 android 应用是否需要进行任何更改?
  • 对不起。我想我在某些时候引起了混乱。我在问您是否在开发过程中更改/使用了不同的项目?但要回答这部分问题,如果您将主项目更改为发件人,则必须为该项目重新生成 google-services.json 文件以用于您的应用程序。

标签: android firebase firebase-cloud-messaging


【解决方案1】:

首先,我要指出MismatchSenderId 错误的描述:

注册令牌与特定的发件人组相关联。当客户端应用注册 FCM 时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人 ID。如果您切换到其他发件人,现有的注册令牌将不起作用。

根据我们的讨论,有人指出您创建了一个新的 Firebase 项目,而不是导入您用于 GCM 的 Google 项目。从新项目中,生成了 google-services.json 并将其用于应用程序,从而使新令牌与新项目的 Sender ID 相关联。正确地可视化它:

  • GCM 注册令牌 > 仅接收来自 > Google Project (1st) 的消息

  • 新令牌 > 仅接收来自 > Firebase 项目(第 2 次)的消息

作为一种解决方案,我建议您将 Google 项目导入 Firebase 控制台,从该项目生成一个 google-services.json 并将您的应用中的那个替换为该项目,它将应用与该项目相关联(正确)项目。这反过来又创建了现在与您的第一个项目相关联的令牌。

  • GCM 注册令牌 > 只接收消息 > Google 项目(第 1 次)

  • 新令牌 > 现在接收消息 > Firebase 项目(第 2 次) 导入的 Google 项目(第 1 次)

希望这是有道理的。


很高兴从讨论中提及:

  • 应用更改后,您提到错误仍然存​​在,但这是一个不同的问题,只需使用服务器密钥即可解决。

  • 在讨论期间链接a post

【讨论】:

  • @Ton 我想我几乎涵盖了我们讨论和解释的内容(希望可以理解)事情是如何运作的。如果您还有其他要指出的内容,请随时编辑我的答案。干杯!
  • 完美。你的帮助对我来说非常重要。我从没想过要导入我的旧 GCM 项目。为你干杯
【解决方案2】:

支持@AL的回答,基本上你需要在所有设备上卸载应用程序并重新安装应用程序,以便所有设备接收与新连接的firebase项目数据库对应的新令牌。

【讨论】:

    【解决方案3】:

    需要在 Google Console 中启用以下 api (https://console.cloud.google.com/)

    Firebase 云消息传递 API 云消息传递

    那么你的senderId就会被识别出来

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多