web-dev-qa-db-fra.com

La FCM reçoit 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 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".

46
TareK Khoury

Firebase a mis à niveau leurs clés de serveur vers la nouvelle version . Utilisez les nouvelles clés au lieu de l’ancienne. 

allez dans Paramètres-> Paramètres du projet-> Onglet Messagerie cloud

 enter image description here

Peut-être que ça va marcher

24
Jinu P C

J'ai eu le même problème. Après des heures consacrées à le résoudre, j'ai trouvé cette solution:

  • Tout d’abord, je vérifie que la clé du serveur est correcte ou non, c’est-à-dire qui estaime
  • Ensuite, j’ai vérifié l’identité de l’expéditeur, comme 79XXXXXXXX, qui était également correcte.
  • Le problème principal était dans device_ID (UDID) à qui je dois envoyer la notification. En fait, DeviceId que nous avons obtenu du côté Android dansFCMest différent deGCM. Vous ne pouvez pas utiliserGCMcreated DeviceId inFCM

J'espère que ceci vous aidera. Merci

14
Nauman Khan

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. 

6

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é.

2
Wild

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

2
Flowra

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.

1
Diego Sanabria

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.

1
Abdul Rauf

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 .

1
stasionok

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.

1
Shabir Mustafa

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.

0
cewe

J'ai eu le même problème, et je l'ai corrigé comme ceci:

  1. Accédez à votre console google fcm
  2. Sélectionnez votre application
  3. Dans le menu de gauche, icône des paramètres de recherche (roue standard)
  4. Cliquez dessus et après cliquez sur les paramètres du projet
  5. Maintenant, copiez votre clé de serveur et collez-la dans php

Voila ...

0
V. Sambor

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.

0
dkelosky

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>
0
Shivam Sihare

CECI A TRAVAILLÉ POUR MOI:

  • VÉRIFIEZ LE PROJET FIREBASE DE VOTRE PROJET Android ACTUEL IS LIÉ À ET UTILISATION Clé de serveur DE CE PROJET.

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.

0
gore.kha

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.

0
Robert Thille

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

0
MartLav

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.

0
Pablo

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é. 

0
j2emanue

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 

0
Karthikeyan Ve