Estoy tratando de crear un servicio push para mi aplicación de Android, y sigo la documentación y el ejemplo de Google GCM para este asunto:
Puedo registrar / anular el registro de mi aplicación de Android. Desde el lado de mi servidor, puedo ver que tengo una suscripción registrada, pero cuando intento enviar un mensaje desde el servidor a mi aplicación de Android, siempre aparece el siguiente error:
Error al enviar el mensaje al dispositivo # 0: MismatchSenderId
Para mi aplicación de Android, uso SENDER_ID = 200000000001.
Y para mi lado del servidor, como dice Google, uso API_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs
Seguí este documento:
También habilité GCM en mi panel de API de Google, pero recibiré ese molesto mensaje de error.
¿Como puedo solucionar este problema?
fuente
Respuestas:
¿Su servidor usó el nuevo ID de registro devuelto por el servidor de GCM a su aplicación? Tuve este problema, si intentaba enviar un mensaje a las ID de registro proporcionadas por el servidor C2DM antiguo.
Y también verifique dos veces la ID del remitente y la API_KEY, deben coincidir o, de lo contrario, obtendrá el error MismatchSenderId. En la consola API de Google, mire la URL de su proyecto:
https://code.google.com/apis/console/#project:xxxxxxxxxxx
Xxxxxxxxx es el ID del proyecto, que es el ID del remitente.
Y asegúrese de que la clave API pertenece a 'Clave para aplicaciones de servidor (con bloqueo de IP)'
fuente
La discrepancia ocurre cuando no usa el ID numérico. ¡La ID del proyecto NO ES LA ID DEL REMITENTE! Me tomó 9 horas darme cuenta de esto. Para toda la confusión creada por Google, consulte el siguiente enlace para obtener una identificación numérica.
https://console.cloud.google.com
en vez de
https://console.developers.google.com
¡¡Espero eso ayude!!
Actualización: - Las cosas han cambiado de nuevo. 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 identificación del remitente.
¡Y funciona!
fuente
Ejecute el siguiente script 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 tiene éxito o no
fuente
Encontré el mismo problema recientemente y probé diferentes valores para "gcm_sender_id" según el ID del proyecto. Sin embargo, el valor "gcm_sender_id" debe establecerse en "Número de proyecto".
Puede encontrar este valor en: Menú> IAM y Admin> Configuración.
Ver captura de pantalla: Número de proyecto de GCM
fuente
InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope)
AuthorizedEntity es el número de proyecto del servidor
fuente
Su aplicación de Android debe corregir la identificación del número 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 Google Play Console en su aplicación específica, 'Servicio y API' -> 'ID DE REMITENTE VINCULADOS'
fuente
Esto sucede cuando la clave del servidor y la solicitud HTTP de los parámetros de ID del servidor no coinciden. Básicamente, tanto la ID del servidor como la clave del servidor deben pertenecer al mismo proyecto de base de fuego. Consulte la siguiente imagen. En caso de mezclar estos parámetros de diferentes proyectos de Firebase, se producirá el error MismatchSenderId
fuente
Verifique el
google-services.json
archivo en laapp
carpeta de su proyecto de Android. Genere uno nuevo desde Firebase console si no está seguro. Recibí este error en dos casos.Usé un proyecto de prueba de Firebase con la aplicación de prueba (que contenía el
google-services.json
archivo correcto ). Luego intenté enviar una notificación automática a otra aplicación y obtuve este error ('"error": "MismatchSenderId"'). Entendí que la segunda aplicación estaba vinculada a otro proyecto de Firebase con diferentegoogle-services.json
. Debido a que las claves del servidor son diferentes, la solicitud debe reescribirse.Cambié
google-services.json
en la aplicación, porque quería reemplazar el proyecto de prueba de Firebase con un archivo . Genere elgoogle-services.json
archivo correcto , cambié la solicitud, pero seguí recibiendo este error. Al día siguiente se arregló solo. Sospecho que Firebase no se actualiza sincrónicamente.Para obtener una clave de servidor para la solicitud, abra https://console.firebase.google.com y seleccione un proyecto apropiado.
Luego péguelo en la solicitud.
fuente
Con la desactivación de GCM y la eliminación de sus API, parece que podría ver MismatchSenderId si intenta usar GCM después del 29 de mayo de 2019. Consulte las preguntas frecuentes de Google GCM y FCM para obtener más detalles.
fuente
Utilice el ID del remitente y la clave API generados aquí: http://developers.google.com en su lugar (busque primero Google Cloud Messaging y siga las instrucciones).
fuente
Si se usa para Android nativo, verifique su
AndroidMaifest.xml
archivo:<meta-data android:name="onesignal_google_project_number" android:value="str:1234567890" /> <!-- its is correct. -->
en lugar
<meta-data android:name="onesignal_google_project_number" android:value="@string/google_project_number" />
¡¡Espero eso ayude!!
fuente