Android: error "no coinciden con el identificador del remitente", mientras que presionar la notificación al dispositivo Android a través de PHP y GCM

Estoy tratando de enviar una notificación a mi teléfono a través de mi página. Php … todo está configurado correctamente, pero tengo el error:

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

No sé por qué, porque el identificador de remitente es correcto, la api también (he probado la clave del servidor y la clave del navegador, sólo para estar seguro).

Realmente no sé dónde me equivoco!

En mi aplicación sólo tengo la identificación del remitente y todos han ido bien, en mi servidor tengo la clave para el navegador (ahora):

 <?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; } 

Yo tuve el mismo problema.

La solución es usar mi número de proyecto en lugar de API_KEY para el sender_id en la aplicación android. En la secuencia de comandos del servidor, debe mantener la API_KEY.

Puedes ver tu número de proyecto en la pestaña "Resumen" dentro de tu proyecto en Google Developers Console.

Por favor, ejecute la siguiente secuencia de comandos en su terminal

 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 porque en el mismo dispositivo que ha registrado con diferentes claves. Para resolver este problema desinstale una aplicación y ejecútela de nuevo y actualice la clave de registro. Y luego ejecutar el script CURL en su terminal que publico por encima de él dará un mensaje de éxito y obtendrá una notificación a su dispositivo

Tuve el mismo problema. El problema exacto fue que me olvidé de cambiar el nuevo google-services.json que he descargado después de importar mi proyecto a Firebase de GCM.

Asegúrese de actualizar google-services.json después de importar

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.