Tengo una aplicación que usa Google FCM para enviar notificaciones push.
Cuando envío una notificación automática a un grupo de usuarios, obtengo una respuesta de MismatchSenderId
algunos de ellos. Sin embargo, todos los usuarios tienen exactamente la misma aplicación. ¿Cómo pueden algunos usuarios obtener una respuesta de éxito y otros un MismatchSenderId?
Investigué mucho y me aseguré de haber agregado todos los requisitos previos que necesita FCM.
¿Alguna sugerencia?
EDITAR:
Respuesta de muestra:
{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
EDITAR 2:
Aquí está el código de envío del lado del servidor (PHP):
$fields = array
(
'to' => $token,
'data' => $data
);
$headers = array
(
'Authorization: key=AIza**************************',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, true );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode($fields) );
curl_exec( $ch );
curl_close( $ch );
ACTUALIZAR:
Parece que el problema se ha resuelto con las actualizaciones del SDK. Ahora estoy usando la última versión com.google.firebase:firebase-messaging:9.6.1
, ya no obtengo "MismatchSenderId".
fuente
Server Key
(se puede encontrar en firebase console en la pestaña del servidor) y noAPI_KEY
degoogle-service.json
. En segundo lugar, asegúrese de establecer el destino correctamente. Por ejemplo,to" : "/topics/yourtopic"
si desea enviar un mensaje a todos los dispositivos (primero deben suscribirse a ese tema). O intente enviar a un dispositivo en particular, luego es necesario escribir el token del dispositivo (recibido en el primer inicio en el servicio de base de fuego)cec5gH04....92IyHrB2K
Respuestas:
Firebase ha actualizado sus claves de servidor a una nueva versión. Utilice claves nuevas en lugar de las antiguas.
fuente
Encontré esta solución:
fuente
ESTO FUNCIONÓ PARA MÍ:
Estaba usando la clave del servidor de un proyecto de base de fuego diferente (por ejemplo, Proyecto 2). Usé la misma clave de servidor que estaba vinculada con mi proyecto de Android (Say Project 1) y funcionó. En mi experiencia, el uso de una aplicación de base de fuego para todo un proyecto de Android pareció solucionar el problema.
fuente
En mi caso, me equivoqué sobre las credenciales del proyecto: uso de google-services.json de un proyecto y clave de servidor de otro.
fuente
Solo un FYI. Me encontré con este error, aunque juro que la aplicación de Android que estaba probando se creó con el último / mejor archivo google-services.json y pude enviarlo desde la consola FCM a la aplicación. Reconstruí la aplicación después de hacer una
Clean Project
y ahora puedo enviarla a la aplicación con el token FCM que registra. Entonces, tal vez intente una reconstrucción limpia antes de golpearse la cabeza contra la pared durante demasiado tiempo.fuente
Pasamos horas y horas para resolver este problema. Descubrimos que el token se estaba generando usando diferentes configuraciones de cuenta de FCM (google-services.json) y la notificación se estaba configurando usando una cuenta de FCM diferente. Cuando sincronizamos ambos, funcionó de maravilla.
fuente
Descubrí que
senderId
es diferente del número de proyecto en la consola de FCM,así que volví a descargar google-services.json y todo funciona bien
fuente
Mi problema se resolvió ingresando la clave correcta como se muestra a continuación.
Copie la clave del servidor como esta imagen
Y luego copia este código en post man como esta imagen
y el cuerpo es una fila como esta imagen
NOTA:
fuente
Crucé verificado todas las credenciales
Se agregó una nueva clave de servidor y se eliminó la anterior.
Se descargó google-services.json nuevamente
Nada resolvió el problema
Luego solo limpio el proyecto y luego reconstruyo el proyecto. Después de eso, está funcionando bien
fuente
Asegúrese de eliminar todo el código Parse de su aplicación (bibliotecas, receptores en AndroidManifest, etc.). Descubrí que las notificaciones push intermitentes no funcionaban. Según mis observaciones, funcionaría en instalaciones nuevas, pero no en actualizaciones de aplicaciones de Play Store.
Creo que algo interno de Parse estaba en conflicto con FCM (Parse usa GCM, así que supongo que tuvo que ver con el uso de GCM y FCM simultáneamente). Tan pronto como eliminé todos los receptores y bibliotecas de Parse, las cosas funcionaron muy bien.
fuente
En realidad, hay muchas razones para este problema. El mío fue debido a que se pasó un token no válido. Estaba pasando el mismo token generado desde una aplicación y usando el mismo token en otra aplicación. Una vez actualizado el token, me funciona.
fuente
Para eliminar este error de identificación de remitente no coincidente en fcm
{"multicast_id":7751536172966571167,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
se produjo un error,
Entonces, primero requerimos, en FCM, registrar la aplicación, por ejemplo, MyDemoApplication
Después de eso, FCM generará la clave del servidor, es
AIzaSyB9krC8mLHzO_TtECb5qg7NDZPxeG03jHU
decir, la identificación del remitente, es decir,346252831806
estos formatos como estos.Después, en Android Studio, nuestro proyecto se conecta a estos proyectos creados por FCM, es decir, MyDemoApplication
Y el paso más importante es el token del dispositivo o la identificación de registro. Estos token deben crearse en Android Studio.
Después de eso, usando la identificación del remitente y la clave de API en el proyecto de API web, definitivamente recibirá una notificación
fuente
marque gcm_sender_id en manifest.json Si no coincide, es correcto, pero necesita crear nuevos suscriptores para la nueva ID de remitente. Existe ruptura de suscriptores.
fuente
Según la respuesta "MismatchSenderId", se trata de una discrepancia entre FireBase y su "google-services.json" local, debe asegurarse de que ambos manifiestos coincidan
En la consola FireBase, vaya a "YourProject> Project OverView> Cloud Messaging" y verá el "SenderID", que DEBE coincidir con "google-services.json" en su proyecto de Android.
Lo mejor que puede hacer es descargar el archivo json final de la pestaña "General" y colocarlo en su proyecto.
fuente
Tuve el mismo error al intentar enviar una notificación push. Obtenga el archivo google-services.json actualizado y reemplácelo por él. Trabajó para mi.
fuente
Tuve el mismo problema y lo solucioné así:
Voila ...
fuente
Actualizar la inicialización de Firebase funciona para mí.
fuente
Para mí, el problema era que estaba usando el
phonegap-plugin-push
en cordova, probando la aplicación con la aplicación phonegap.El problema con esto es que, por alguna razón, con este complemento, la aplicación phonegap lo intercepta y devuelve una clave de registro ficticia, sin importar qué ID de remitente tenga.
Entonces, para que funcione (siempre que tenga todas las claves correctas) es probar su programa de alguna otra manera, con un emulador o emulación de Android a través de USB. Y tus llaves coincidirán.
Con suerte, esto le ahorrará a alguien algo de tiempo.
fuente
probablemente estés haciendo lo que yo estaba haciendo. El token de GCM ya no es lo mismo que FCM. compruebe si está extrayendo el ID del token de GCM en lugar de FCM. simplemente anule FirebaseInstanceIdService y asegúrese de obtener la identificación correcta. En un momento pensé que eran iguales, pero ahora no. Registré una prueba y vi. después de hacer eso, actualice también google-services.json como dicen otros como medida de seguridad.
fuente
Perdí días en esto.
En mi caso, seguí este blog para usar Postman y obtuve el error de identificación no coincidente. Anteriormente, estaba recibiendo
messaging/mismatched-credential
, y la gente informó que su aplicación cliente usaba varios proyectos.Sin embargo, para mí, tengo uno a uno, una aplicación web y un proyecto. PERO , alojo todas las aplicaciones a través
ng serve
del puerto predeterminado 4200. Entonces, independientemente del par de proyecto / aplicación en el que estuviera desarrollando, siempre obtendría el mismo token de la aplicación web de mi cliente usandoAngularFireMessaging.requestToken
; este token siempre fue el token creado en mi primer ejecución de una aplicación firebase en desarrollo.Como solución, comienzo diferentes aplicaciones / proyectos en diferentes puertos y obtengo los tokens adecuados para los proyectos respectivos.
fuente
Nota: había truncado la primera parte del token FCM (antes
:
) y el error eraMismatchSenderId
Arreglado mi guión y ahora todo funciona bien.
fuente
En mi caso, alguien había eliminado los certificados SSL de APN para mi aplicación en el portal de desarrollo de Apple.
Esto resolvió el problema.
fuente
En mi caso fue muy sencillo. Estaba extrayendo el registrationId incorrecto de la base de datos. Después de sacar la identificación correcta, funcionó.
fuente
Tuve el mismo problema en mi proyecto react-native - node.js. Quería enviar notificaciones en Android. Todo estaba configurado y funcionando bien (es decir, pude enviar notificaciones desde node.js y recibir notificaciones en el dispositivo Android).
Después de unos días, tuve que usar una cuenta de firebase diferente, así que cambié el archivo google-services.json en la carpeta android / app de mi proyecto y reconstruí el proyecto. Pero, cuando intenté enviar una notificación desde mi servidor una vez más, recibí un error:
Solución:
el archivo XML en la ubicación - app / build / generate / res / google-services / {build_type} /values/values.xml no se actualizaba automáticamente de acuerdo con el nuevo google-services.json . Todavía constaba de valores antiguos de mi archivo google-services.json anterior . Tuve que cambiar el archivo values.xml manualmente.
Así es como se ve el archivo app / build / generate / res / google-services / {build_type} /values/values.xml (debe cambiarlo manualmente si no se actualiza automáticamente de acuerdo con google-services.json ) -
Puede consultar estos enlaces:
fuente
Tuve un gran problema para averiguar por qué estaba obteniendo un estado "MismatchSenderId". Agregué la dependencia de gms en la raíz,
build.gradle
pero mi error en realidad no estaba aplicando el complemento de gms en la aplicaciónbuild.gradle
.Si no tiene esta línea en la aplicación
build.gradle
, esta podría ser la razón por la que la notificación no funciona:apply plugin: 'com.google.gms.google-services'
fuente
Me he dado cuenta de que cuando se crea una identificación de dispositivo en GCM, no puede enviar mensajes push a través de FCM usando la nueva clave de servidor, debe usar la clave API anterior.
fuente
Estaba intentando enviar una notificación utilizando la API de FCM "https://fcm.googleapis.com/fcm/send" del cartero. La clave del servidor estaba bien y el token se pegó bien, pero seguía recibiendo el error "MismatchSenderId".
Luego introdujo la siguiente dependencia en el archivo gradle en el lado de Android.
y comenzó a recibir notificaciones en el dispositivo
fuente
También obtengo el mismo error. Copié el api_key y lo cambié a google_services.json. después de eso funcionó para mí
prueba esto
fuente
Usted tendrá una clave de servidor algo como esto AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-Kvy disponible en la configuración de la sección de la consola de base de fuego console.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging .
Especifique la clave correcta con su código y vuelva a intentarlo.
fuente