FCM getting MismatchSenderId
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 ID D'erreur?
j'ai fait de nombreuses recherches et je me suis assuré d'avoir ajouté tous les prérequis dont la FCM a besoin.
Tout des suggestions?
EDIT:
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 );
mise à jour:
il semble que le problème ait été résolu avec les mises à jour SDK. Je suis maintenant à l'aide de la dernière com.google.firebase:firebase-messaging:9.6.1
, je n'ai pas "MismatchSenderId" plus.
15 réponses
Firebase a mis à jour les clés de son serveur vers une nouvelle version. Utilisez de nouvelles clés au lieu d'anciennes.
allez dans paramètres->paramètres du projet->messagerie en nuage onglet
Peut-être cela fonctionnera
j'ai eu le même problème. Après des heures passées à le comprendre, j'ai trouvé cette solution:
- tout d'abord je vérifie que la clé du serveur est correcte ou non elle était correcte ce qui est comme AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxx
- puis je vérifie L'identité de L'expéditeur comme 79XXXXXXXX c'était aussi correct.
- le principal problème était device_ID (UDID) a qui je dois envoyer la notification. En fait DeviceId nous avons obtenu sur le côté androïde en FCM est différent de celui GCM. Vous ne pouvez pas utiliser GCM créer Id FCM.
j'Espère que cela va vous aider. Merci
dans mon cas, je me trompais sur les justificatifs d'identité du projet: utiliser les services google.json d'un projet, et clé de serveur d'un autre.
assurez-vous de supprimer tout le code Parse de votre application (bibliothèques, récepteurs dans AndroidManifest, etc). J'ai constaté que les notifications de poussée intermittentes ne fonctionnaient pas. D'après mes observations, cela fonctionnerait sur les nouvelles installations mais pas sur les mises à jour des applications de la boutique play.
je crois que quelque chose d'interne à analyser était en conflit avec la FCM (Parse utilise la GCM, donc je suppose que cela a à voir avec l'utilisation de la GCM et de la FCM simultanément). Dès que j'ai arraché tous les récepteurs Parse et bibliothèques, les choses ont bien fonctionné.
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
case gcm_sender_id dans le manifeste.json Si l'inadéquation - correct, mais vous avez besoin de faire de nouveaux abonnés pour le nouvel ID de l'expéditeur. Les abonnés existants se cassent.
selon la réponse "MismatchSenderId", il s'agit d'une inadéquation entre FireBase et vos "services google" locaux.json", vous devez vous assurer que les deux se manifeste correspond à
dans la console FireBase vous allez à" YourProject > Project OverView > Cloud Messaging "vous verrez le" SenderID "qui doit correspondre avec les" google-services.json" dans votre projet Android.
la meilleure chose à faire est de télécharger le fichier json final de l'onglet "Général" et de le placer dans votre projet.
j'ai eu le même problème, et je l'ai fixée comme ceci:
- allez sur votre console Google fcm
- Sélectionnez votre application
- Dans le menu de gauche trouver icône paramètres (roue standard)
- cliquez dessus et après cliquez sur Paramètres du projet
- maintenant, copiez votre clé de serveur et collez-la en php
Voila...
mise à Jour de firebase initialisation 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>
pour moi le problème était que j'utilisais le phonegap-plugin-push
dans cordova, tester l'application avec l'application phonegap.
le problème avec ceci est que pour une raison quelconque avec ce plugin, l'application phonegap l'intercepte et renvoie une clé d'enregistrement factice, peu importe L'identifiant de l'expéditeur que vous avez.
donc pour que cela fonctionne (tant que vous avez toutes vos clés à droite) est de tester votre programme d'une autre manière, avec un émulateur, ou l'émulation android via usb. Et vos clés correspondre.
J'espère que cela fera gagner du temps à quelqu'un.
j'ai eu la même erreur en essayant d'envoyer la notification push. Obtenez la mise à jour de google-services.fichier json et remplacé avec elle. A travaillé pour moi.
en Fait, il y a plusieurs raisons à cette question. La mienne était à cause de token invalide. Je passais le même token généré à partir d'une application et j'utilisais le même token dans une autre application. Une fois le token mis à jour, ça marche pour moi.
vous avez probablement fait ce que je faisais. GCM token n'est plus le même que FCM désormais. vérifiez si vous tirez L'ID du jeton GCM au lieu de FCM. il vous suffit de surcharger FirebaseInstanceIdService et de vous assurer que vous obtenez le bon ID. j'ai cru à un moment qu'elles étaient les mêmes, mais maintenant, elles ne le sont plus. j'ai connecté un essai et les a vu. après cela, mettez à jour aussi google-services.json comme d'autres disent que la sécurité.
vous aurez une clé de serveur quelque chose comme ceci AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-KVY disponible dans le Paramètresconsole.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging.
Spécifiez le bon avec votre code et réessayez.
j'obtiens aussi la même erreur. j'ai copié api_key et je me change en google_services.json. après qu'il workig pour moi
"api_key": [
{
"current_key": "********************"
}
],
essayez ceci