FCM获得MismatchSenderId

Tar*_*ury 63 firebase firebase-cloud-messaging

我有一个使用Google FCM发送推送通知的应用程序.

当我向一组用户发送推送通知时,我得到了MismatchSenderId一些用户的回复.尽管如此,所有用户都拥有完全相同的应用程序.一些用户如何获得成功响应而其他用户获得MismatchSenderId?

我已经研究了很多,并确保我已经添加了FCM所需的所有先决条件.

有什么建议?

编辑:

样品回复:

{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
Run Code Online (Sandbox Code Playgroud)

编辑2:

这是服务器端发送代码(PHP):

$fields = array
(
  'to' => $token,
  'data' => $data
);

$headers = array
(
  'Authorization: key=AIza**************************',
  'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, true );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode($fields) );
curl_exec( $ch );
curl_close( $ch );
Run Code Online (Sandbox Code Playgroud)

更新:

似乎已通过SDK更新解决了该问题.我现在正在使用最新版本com.google.firebase:firebase-messaging:9.6.1,我不再使用"MismatchSenderId"了.

Jin*_*P C 31

Firebase已将其服务器密钥升级到新版本.使用新密钥而不是旧密钥.

转到设置 - >项目设置 - >云消息传递选项卡

在此输入图像描述

也许它会起作用

  • 如果您使用服务器密钥或旧服务器密钥,则没有任何区别 (3认同)

小智 20

我有同样的问题.经过数小时的努力来解决这个问题,我发现了这个解决方案

  • 首先,我检查服务器密钥是否正确它是正确的,如AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • 然后我检查发件人ID,如79XXXXXXXX它也是正确的.
  • 主要问题是我必须向其发送通知的device_ID(UDID).实际上我们在FCM中安装的 androidId 与GCM不同.您无法在FCM中使用GCM创建的DeviceId.

希望这会帮助你.谢谢

  • 当我们将后端和Android应用程序升级到FCM时,我们如何向用户发送推送通知,告知用户如何在后端注册GCM令牌.? (3认同)

小智 17

仅供参考。我遇到了这个错误,尽管我发誓我正在测试的 android 应用程序是用最新/最好的 google-services.json 文件构建的,我可以从 FCM 控制台发送到应用程序。我在做了一个之后重建了应用程序Clean Project,现在我可以使用它注册的 FCM 令牌发送到应用程序。所以,也许在用头撞墙太久之前尝试干净的重建。

  • 这两个项目都使用新的 FCM,但这仍然是问题。拯救了我的一天! (2认同)

gor*_*kha 10

这对我有用:

  • 检查您的当前ANDROID项目已链接到哪个FIREBASE项目并使用该 项目中的服务器密钥

我使用的是另一个Firebase项目(例如Project 2)中的Server key。我使用与链接到我的android项目(说Project 1)相同的服务器密钥,它起作用了。以我的经验,为一个完整的android项目使用一个firebase应用似乎可以解决问题。


小智 9

就我而言,我只是在误解项目凭证:从一个项目使用google-services.json,从另一个项目使用服务器密钥.

  • 你节省了我的时间! (2认同)

abo*_*ndi 8

通过输入正确的密钥解决了我的问题,如下所示。

像这张图片一样 复制服务器密钥在此处输入图片说明

然后像这张图片一样在邮递员中复制此代码 在此处输入图片说明

和身体是这样的图片

在此处输入图片说明 笔记:

  • 您必须在标题中的服务器键之前添加key=
  • 确保正确输入标题键(Authorization = "key=..." and ContentType = "application/json")
  • 您已将请求发送到正确的地址https://fcm.googleapis.com/fcm/send和 Post 方法)


Abd*_*auf 7

我们花了几个小时来解决这个问题。我们发现令牌是使用不同的 FCM 帐户设置 (google-services.json) 生成的,并且通知是使用不同的 FCM 帐户设置的。当我们同步两者时,它就像一个魅力。


Abr*_*hew 6

  • 我交叉验证了所有凭据

  • 添加了新的服务器密钥并删除了旧的服务器密钥

  • 再次下载google-services.json

没有解决任何问题

然后我只是清理项目,然后重建项目。之后它工作正常


Flo*_*wra 5

我发现senderId与 FCM 控制台中的项目编号不同
,因此我重新下载了 google-services.json 并且一切正常


V. *_*bor 0

我遇到了同样的问题,我是这样解决的:

  1. 转到您的 google fcm 控制台
  2. 选择您的应用程序
  3. 在左侧菜单中找到设置图标(标准滚轮)
  4. 单击它,然后单击项目设置
  5. 现在复制您的服务器密钥并将其粘贴到 php 中

瞧……