【发布时间】:2016-10-18 04:50:48
【问题描述】:
我有一个使用 Google FCM 发送推送通知的应用程序。
当我向一组用户发送推送通知时,我收到其中一些用户的MismatchSenderId 响应。尽管如此,所有用户都拥有完全相同的应用程序。一些用户如何获得成功响应而其他用户获得 MismatchSenderId?
我进行了很多研究,并确保我添加了 FCM 需要的所有先决条件。
有什么建议吗?
编辑:
示例响应:
{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
编辑 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 );
更新:
该问题似乎已通过 SDK 更新解决。我现在使用的是最新的com.google.firebase:firebase-messaging:9.6.1,我不再收到“MismatchSenderId”了。
【问题讨论】:
-
MismatchSenderId 表示您的客户端正在注册与您用于发送的服务器不同的服务器。您的所有客户都注册同一个项目吗?您还可以在问题中包含 MismatchSenderId 响应吗?
-
是的,相同的项目,相同的应用程序,相同的服务器密钥。
-
您能否展示一下您如何发送此消息的代码?我可能知道问题的原因..
-
@TareKhoury,谢谢。首先。确保您使用的授权密钥是
Server Key(可以在服务器选项卡的firebase 控制台中找到)而不是google-service.json中的API_KEY。其次,确保您设置的目的地正确。例如,to" : "/topics/yourtopic"如果您想向所有设备发送消息(他们应该首先订阅该主题)。或者尝试发送到特定设备,然后需要输入设备令牌(在firebase服务中首次启动时收到)cec5gH04....92IyHrB2K -
过去 2 年有没有人设法解决这个问题?
标签: firebase firebase-cloud-messaging