Android: ошибка «mismatch sender id» при одновременном нажатии уведомления на устройство Android, хотя PHP и GCM

Я пытаюсь отправить уведомление на свой телефон через мою .php страницу … все настроено правильно, но я получаю сообщение об ошибке:

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

Я не знаю, почему, поскольку идентификатор отправителя является правильным, api также (я попробовал ключ сервера и ключ браузера, чтобы быть уверенным).

Я действительно не знаю, где я ошибаюсь!

В моем приложении у меня есть только идентификатор отправителя, и все ушло вправо, на моем сервере у меня есть ключ для браузера (сейчас):

 <?php require_once("../pi_classes/commonSetting.php"); include('../pi_classes/User.php'); ini_set("display_errors",1); class GCM{ function __construct(){} public function send_notification($registatoin_ids,$message){ // GOOGLE API KEY define("GOOGLE_API_KEY","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); $url="https://android.googleapis.com/gcm/send"; $fields=array( "registration_ids"=>$registatoin_ids, "data"=>$message, ); var_dump($fields); $headers=array( "Authorization: key=".GOOGLE_API_KEY, "Content-Type: application/json" ); $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_HTTPHEADER,$headers); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields)); $result=curl_exec($ch); if($result===FALSE){ die("Curl failed: ".curl_error($ch)); } curl_close($ch); echo $result; } } // ====================== //=INVIA LE NOTIFICHE AGLI UTENTI = // ====================== $messaggio="Ciao, sono una notifica!"; $pushCounter=0; $registatoin_ids=array(); $result=mysql_query("SELECT android_regi_id FROM user_details"); while($row=mysql_fetch_array($result)){ $token=$row["android_regi_id"]; if($token!=""){ $registatoin_ids[]=$token; $pushCounter++; } } if($pushCounter>0){ $gcm=new GCM(); $message=array("price"=>$messaggio); $result_android=$gcm->send_notification($registatoin_ids,$message); echo $result_android; } в <?php require_once("../pi_classes/commonSetting.php"); include('../pi_classes/User.php'); ini_set("display_errors",1); class GCM{ function __construct(){} public function send_notification($registatoin_ids,$message){ // GOOGLE API KEY define("GOOGLE_API_KEY","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); $url="https://android.googleapis.com/gcm/send"; $fields=array( "registration_ids"=>$registatoin_ids, "data"=>$message, ); var_dump($fields); $headers=array( "Authorization: key=".GOOGLE_API_KEY, "Content-Type: application/json" ); $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_HTTPHEADER,$headers); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields)); $result=curl_exec($ch); if($result===FALSE){ die("Curl failed: ".curl_error($ch)); } curl_close($ch); echo $result; } } // ====================== //=INVIA LE NOTIFICHE AGLI UTENTI = // ====================== $messaggio="Ciao, sono una notifica!"; $pushCounter=0; $registatoin_ids=array(); $result=mysql_query("SELECT android_regi_id FROM user_details"); while($row=mysql_fetch_array($result)){ $token=$row["android_regi_id"]; if($token!=""){ $registatoin_ids[]=$token; $pushCounter++; } } if($pushCounter>0){ $gcm=new GCM(); $message=array("price"=>$messaggio); $result_android=$gcm->send_notification($registatoin_ids,$message); echo $result_android; } Загрузить <?php require_once("../pi_classes/commonSetting.php"); include('../pi_classes/User.php'); ini_set("display_errors",1); class GCM{ function __construct(){} public function send_notification($registatoin_ids,$message){ // GOOGLE API KEY define("GOOGLE_API_KEY","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); $url="https://android.googleapis.com/gcm/send"; $fields=array( "registration_ids"=>$registatoin_ids, "data"=>$message, ); var_dump($fields); $headers=array( "Authorization: key=".GOOGLE_API_KEY, "Content-Type: application/json" ); $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_HTTPHEADER,$headers); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields)); $result=curl_exec($ch); if($result===FALSE){ die("Curl failed: ".curl_error($ch)); } curl_close($ch); echo $result; } } // ====================== //=INVIA LE NOTIFICHE AGLI UTENTI = // ====================== $messaggio="Ciao, sono una notifica!"; $pushCounter=0; $registatoin_ids=array(); $result=mysql_query("SELECT android_regi_id FROM user_details"); while($row=mysql_fetch_array($result)){ $token=$row["android_regi_id"]; if($token!=""){ $registatoin_ids[]=$token; $pushCounter++; } } if($pushCounter>0){ $gcm=new GCM(); $message=array("price"=>$messaggio); $result_android=$gcm->send_notification($registatoin_ids,$message); echo $result_android; } 

    У меня такая же проблема.

    Решение использует мой номер проекта вместо API_KEY для sender_id в приложении для Android. На скрипте сервера вы должны сохранить API_KEY.

    Вы можете увидеть свой номер проекта на вкладке «Обзор» внутри вашего проекта в Google Developers Console.

    Пожалуйста, запустите сценарий под терминалом

     curl -X POST \ -H "Authorization: key= write here api_key" \ -H "Content-Type: application/json" \ -d '{ "registration_ids": [ "write here reg_id generated by gcm" ], "data": { "message": "Manual push notification from Rajkumar" }, "priority": "high" }' \ https://android.googleapis.com/gcm/send 

    MismatchSenderId потому что внутри того же устройства вы вошли в систему с разными ключами. Для решения этой проблемы удалите приложение и запустите его снова и обновите регистрационный ключ. А затем запустите сценарий CURL в своем терминале, который я разместил выше, он даст сообщение об успешном завершении, и вы получите уведомление на свое устройство

    Я была такая же проблема. Точная проблема заключалась в том, что я забыл изменить новый google-services.json, который я загрузил после импорта моего проекта в Firebase из GCM.

    Убедитесь, что вы обновили google-services.json после импорта.