{ "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; }
以下是导致此问题的可能情况.
案例1:发件人ID不匹配 – >
请检查您正在使用的项目编号.如果它是正确的.
案例2:错误的API密钥 – >
请确保您使用的是相同的API_Key.在大多数情况下,我们需要生成Server_Key而不是Android_Key.
案例3:设备ID错误 – >
大多数情况下,问题是由于错误的设备ID(GCM生成的注册ID).
请确保无论何时生成新的API密钥,设备的设备ID都会发生变化.然后将需要将近5五分钟才能获得效果.
注意:您的设备ID与API KEY绑定.
所以….
–New Key created.
–GCM for Android Turned “on” in Google Dev. Console.
–Device registered with backend fine (Android Project is doing its job). Device key on the server.
–Send to device. Fail! The same message is returned from GCM everytime.
回顾一下.这不是Android Studio,Android操作系统或设备问题. GCM服务器甚至没有尝试将消息发送到设备.我的服务器发送到GCM,它返回消息……
{"multicast_id":6047824495557336291,"results":[{"error":"MismatchSenderId"}]}
到服务器.据我所知,这意味着设备的ID(注册推送时返回设备的ID,后端(控制面板中)保存的ID不匹配,或者与API无关)发送消息时使用的密钥.
当然,发送在我的服务器上启动,转到GCM,然后转到设备.
这就是没有发生的事情.消息从我的服务器转到GCM并返回到我的服务器 – 出错.
你们所有人都可以想象的超级沮丧 – 我们之前都经历过这种噩梦般的东西:-)
参考:https://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924
希望它能解决你的问题.