¿Por qué obtengo “MismatchSenderId” del lado del servidor GCM?

Intento crear un servicio de inserción para mi aplicación de Android, y sigo la documentación y el ejemplo de Google GCM para este asunto:

Puedo registrar / cancelar el registro de mi aplicación de Android. Desde mi servidor, puedo ver que tengo una suscripción registrada, pero cuando trato de enviar un mensaje desde el servidor a mi aplicación de Android siempre obtengo el siguiente error:

Error al enviar el mensaje al dispositivo n. ° 0: MismatchSenderId

Para mi aplicación de Android, uso SENDER_ID = 200000000001.

Y para mi lado del servidor como Google dice que utilizo API_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs

Seguí este documento:

http://developer.android.com/guide/google/gcm/demo.html

También habilité GCM en mi panel de API de Google, pero recibiré ese molesto mensaje de error.

¿Como puedo solucionar este problema?

¿Su servidor utilizó la nueva identificación de registro devuelta por el servidor GCM a su aplicación? Tuve este problema, si trato de enviar un mensaje a las ID de registro que me ha dado el viejo servidor C2DM.

Y también comprueba dos veces la Id. Del remitente y la API_KEY, deben coincidir o de lo contrario obtendrás el error MismatchSenderId. En Google API Console, mira la URL de tu proyecto:

https://code.google.com/apis/console/#project:xxxxxxxxxxx 

Xxxxxxxxx es la ID del proyecto, que es la ID del remitente.

Y asegúrese de que la clave API pertenezca a ‘Clave para aplicaciones de servidor (con locking de IP)’

La discordancia ocurre cuando no usa la ID numérica. ¡La identificación del proyecto NO ES IDENTIFICADOR DEL REMITENTE! Me llevó 9 horas resolver esto. Para toda la confusión creada por google, consulte el siguiente enlace para obtener la identificación numérica.

https://console.cloud.google.com

en lugar de

https://console.developers.google.com

¡¡Espero eso ayude!!

Actualización: – Las cosas han cambiado nuevamente. Ahora la identificación del remitente está con firebase.

Vaya a https://console.firebase.google.com y seleccione su proyecto. En Configuración -> mensajería en la nube, puede encontrar la ID del remitente.

¡Y funciona!

Por favor, ejecute la secuencia de comandos a continuación 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 

dará el mensaje si es exitoso o falló

Me encontré con el mismo problema recientemente y probé valores diferentes para “gcm_sender_id” según la identificación del proyecto. Sin embargo, el valor “gcm_sender_id” debe establecerse en el “Número de proyecto”.

Puede encontrar este valor en: Menú> IAM y Administrador> Configuración.

Ver captura de pantalla: Número de proyecto GCM

 InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope) 

authorizedEntity es el número de proyecto del servidor

Su aplicación de Android necesita corregir el número de identificación de 12 dígitos (también conocido como Número de proyecto de GCM). Si este número de 12 dígitos es incorrecto, también obtendrá este error.

Este número de 12 dígitos se encuentra en su consola de Google Play en su aplicación específica, ‘Servicio y API’ -> ‘IDENTIFICADOR DE ENVÍO ENLACE’.

Si usa Android nativo, verifique su archivo AndroidMaifest.xml :

   

en lugar

   

¡¡Espero eso ayude!!

Use la ID del remitente y la clave API generada aquí: http://developers.google.com en su lugar (primero busque Mensajería en la nube de Google y siga las instrucciones).