PHP GCM错误消息MismatchSenderId

我正面临GCM推送通知的问题。 我收到以下错误。

{ "multicast_id":4630467710672911593, "success":0, "failure":1, "canonical_ids":0, "results":[{ "error":"MismatchSenderId" }] } 

以下是代码。 任何帮助将非常感激。 提前致谢。

 public function gcmPush() { $regId = "APA91bHFcgOssQZEqtdUk3EC1ojwC5-LVG3NPV2bMqKyC9rPymR6StmAbz-N7Ss8fnvruZhWWNrR3lmBqpjQItlu00AKHPbltBclUJF-EfC5qG4CF2xiuYYC0NCf8u5rbiYFk8ARhIT4lY2AEPWzGpl1OtTvQEC0gA"; $registatoin_ids = array($regId); $message = array("msg" => 12345); $this->send_notification($registatoin_ids, $message); } public function send_notification($registatoin_ids, $message) { // Set POST variables $url = 'https://android.googleapis.com/gcm/send'; define('GOOGLE_API_KEY', 'AIzaSyBavsIgQKo1Nf9wKZ5o_fGvE_6MI52LFR0'); $fields = array( 'registration_ids' => $registatoin_ids, 'data' => $message, ); $headers = array( 'Authorization: key=' . GOOGLE_API_KEY, 'Content-Type: application/json' ); // Open connection $ch = curl_init(); // Set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Disabling SSL Certificate support temporarly curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // Execute post $result = curl_exec($ch) if ($result === FALSE) { die('Curl failed: ' . curl_error($ch)); } // Close connection curl_close($ch); echo $result; } 

Solutions Collecting From Web of "PHP GCM错误消息MismatchSenderId"

“MismatchSenderId”是我们现在得到的明显问题。

以下是导致此问题的可能情况。

案例1:发件人ID不匹配 – >请检查您正在使用的项目编号。 如果这是正确的或没有。

情况2:错误的API密钥 – >请确定您使用的API_Key是否相同。 而在大多数情况下,我们需要生成Server_Key而不是Android_Key。

案例3:错误的设备ID – >大多数情况下,问题是由于设备ID错误(由GCM生成的注册ID)。

请确保无论何时您生成新的API密钥,设备的设备ID都会被更改。 然后花费将近5分钟才能达到效果。

注意:您的设备ID与API KEY绑定。

所以….

– 创build新密钥

–GCM for Android在Google Dev中“打开”。 安慰。

– 设备注册后端罚款(Android项目正在完成其工作)。 服务器上的设备密钥。

– 发送到设备。 失败! 每次从GCM返回相同的消息。

回顾一下。 这不是Android Studio,Android操作系统或设备问题。 GCM服务器甚至不尝试将消息发送到设备。 我的服务器发送到GCM,它返回消息…

 {"multicast_id":6047824495557336291,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]} 

到服务器。 据我所知,这意味着设备的ID(注册推送时返回给设备的设备ID)和后台(控制面板)上保存的ID不匹配,或者与API无关发送消息时使用的密钥。

发送,当然,开始在我的服务器,去GCM,然后去设备。

这是没有发生。 该消息从我的服务器到GCM并返回到我的服务器 – 与错误。

所有人都能想象的超级沮丧 – 我们都已经经历过这个噩梦般的东西:-)

参考: https : //www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924

希望它能解决你的问题。