J'ai une application qui utilise Google FCM pour envoyer des notifications Push.
Lorsque j'envoie une notification Push à un groupe d'utilisateurs, je reçois une réponse de MismatchSenderId
pour certains d'entre eux. Même si, tous les utilisateurs ont exactement la même application. Comment certains utilisateurs peuvent-ils obtenir une réponse positive et d'autres un MismatchSenderId?
J'ai fait beaucoup de recherches et je me suis assuré d'avoir ajouté tous les préalables nécessaires à la FCM.
Aucune suggestion?
MODIFIER:
Exemple de réponse:
{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
EDIT 2:
Voici le code d'envoi côté serveur (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 );
METTRE À JOUR:
Il semble que le problème ait été résolu avec les mises à jour du SDK. J'utilise maintenant le dernier com.google.firebase:firebase-messaging:9.6.1
, je ne reçois plus "MismatchSenderId".
J'ai eu le même problème. Après des heures consacrées à le résoudre, j'ai trouvé cette solution:
J'espère que ceci vous aidera. Merci
Dans mon cas, je me trompais simplement sur les informations d'identification du projet: utiliser google-services.json d'un projet et la clé de serveur d'un autre.
Assurez-vous de supprimer tout le code d'analyse de votre application (bibliothèques, récepteurs dans AndroidManifest, etc.). J'ai constaté que les notifications Push ne fonctionnaient pas par intermittence. D'après mes observations, cela fonctionnerait sur de nouvelles installations, mais pas sur les mises à jour d'applications du Play Store.
Je crois que quelque chose interne à Parse était en conflit avec FCM (Parse utilise GCM, donc je suppose que cela avait à voir avec l'utilisation simultanée de GCM et FCM). Dès que j'ai déchiré tous les récepteurs et les bibliothèques de Parse, tout s'est très bien passé.
ce qui fonctionne pour moi:
J'ai trouvé que le senderId est différent du numéro de projet dans la console FCM
alors j'ai re-téléchargé google-services.json et tout fonctionne bien
Selon la réponse "MismatchSenderId", il s'agit d'une incompatibilité entre FireBase et votre "google-services.json" local, vous devez vous assurer que les deux manifestes correspondent
Dans la console FireBase, accédez à "YourProject> Project OverView> Cloud Messaging". Le "SenderID" (identificateur d'expéditeur) doit correspondre à "google-services.json" dans votre projet Android.
La meilleure chose à faire est de télécharger le fichier final JSON à partir de l’onglet "Général" et de le placer dans votre projet.
Nous avons passé des heures et des heures à résoudre ce problème. Nous avons constaté que le jeton était généré à l'aide de différents paramètres de compte FCM (google-services.json) et que la notification était définie à l'aide d'un compte FCM différent . Lorsque nous avons synchronisé les deux, cela a fonctionné comme un charme.
check gcm_sender_id in manifest.json En cas d'incompatibilité, corrigez-le, mais vous devez créer de nouveaux abonnés pour le nouvel ID d'expéditeur .
En fait, il y a plusieurs raisons à ce problème… .. Le mien était dû au jeton invalide transmis… .. Je passais le même jeton généré à partir d'une application et en utilisant le même jeton dans une autre application… .. Une fois le jeton mis à jour, cela fonctionne moi.
Bonjour, j'ai remarqué que lorsqu'un identifiant de périphérique est créé dans GCM, vous ne pouvez pas envoyer de messages Push via FCM à l'aide de la nouvelle clé de serveur, vous devez utiliser l'ancienne clé API.
J'ai eu le même problème, et je l'ai corrigé comme ceci:
Voila ...
J'ai perdu des jours à ce sujet.
Dans mon cas, j'ai suivi ceci blog utiliser Postman et obtenir l'erreur mismatchsenderid. Auparavant, j'obtenais messaging/mismatched-credential
et les utilisateurs ont signalé que leur application client utilisait plusieurs projets.
Cependant, pour moi, j'ai un tête-à-tête, une application Web et un projet. MAIS, j'héberge toutes les applications via ng serve
sur le port par défaut 4200. Ainsi, quel que soit le projet/couple sur lequel je développais, J'obtiendrais toujours le même jeton depuis l'application Web de mon client en utilisant AngularFireMessaging.requestToken
- ce jeton était toujours le jeton créé lors de ma première exécution d'une application Firebase en développement.
Pour contourner le problème, je démarre différentes applications/projets sur différents ports et j'obtiens les bons jetons pour les projets respectifs.
La mise à jour de l'initialisation de firebase fonctionne pour moi.
<script src="https://www.gstatic.com/firebasejs/4.6.2/firebase.js"></script>
<script>
// Initialize Firebase
// TODO: Replace with your project's customized code snippet
var config = {
apiKey: "<API_KEY>",
authDomain: "<PROJECT_ID>.firebaseapp.com",
databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
storageBucket: "<BUCKET>.appspot.com",
messagingSenderId: "<SENDER_ID>",
};
firebase.initializeApp(config);
</script>
CECI A TRAVAILLÉ POUR MOI:
J'utilisais la clé de serveur d'un autre projet Firebase (par exemple, Project 2). J'ai utilisé la même clé de serveur que celle liée à mon projet Android (Say Project 1) et cela a fonctionné. D'après mon expérience, utiliser une application firebase pour un projet Android complet semblait résoudre le problème.
Juste un FYI. Je rencontrais cette erreur alors que je jure que l'application Android que je testais a été construite avec le dernier/meilleur fichier google-services.json et que je pouvais envoyer de la console FCM à l'application ..__ reconstruit l'application après avoir effectué un Clean Project
et je peux maintenant envoyer à l'application avec le jeton FCM qu'il enregistre. Alors, essayez peut-être une reconstruction propre avant de vous frapper la tête contre le mur trop longtemps.
J'ai eu beaucoup de difficulté à comprendre pourquoi j'avais le statut "MismatchSenderId". J'ai ajouté la dépendance gms à la racine build.gradle
, mais mon erreur ne s'appliquait pas au plugin gms de l'application build.gradle
.
Si vous n'avez pas cette ligne dans l'application build.gradle
, cela pourrait être la raison pour laquelle la notification ne fonctionne pas: apply plugin: 'com.google.gms.google-services'
Peut-être que cela peut aider quelqu'un À la vôtre
Pour moi, le problème était que j'utilisais le phonegap-plugin-Push
à Cordova, en testant l'application avec l'application phonegap.
Le problème, c’est que, pour une raison quelconque, avec ce plugin, l’application phonegap l’intercepte et renvoie une clé d’enregistrement factice, quel que soit l’identifiant de l’expéditeur que vous avez.
Donc, pour que cela fonctionne (tant que toutes vos clés sont correctes), vous devez tester votre programme d’une autre manière, avec un émulateur ou une émulation Android via usb. Et vos clés vont correspondre.
Espérons que cela économise du temps à quelqu'un.
tu fais probablement ce que je faisais. Le jeton GCM n'est plus le même que FCM. vérifiez si vous tirez l'ID de jeton GCM au lieu de FCM. remplacez simplement FirebaseInstanceIdService et assurez-vous d'obtenir le bon ID. Je pensais qu'à un moment donné ils étaient identiques mais maintenant il n'y en a plus. J'ai enregistré un test et vu. mettez également à jour google-services.json, comme d’autres le disent par sécurité.
J'ai eu la même erreur en essayant d'envoyer une notification Push. Récupérez le fichier google-services.json mis à jour et remplacez-le. Travaillé pour moi