119 votes

FCM obtient 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 la réponse suivante MismatchSenderId pour certains d'entre eux. Pourtant, tous les utilisateurs ont exactement la même application. Comment se fait-il que certains utilisateurs obtiennent une réponse positive et que d'autres obtiennent un MismatchSenderId ?

J'ai fait de nombreuses recherches et je me suis assuré d'avoir ajouté toutes les conditions préalables dont la FCM a besoin.

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 );

UPDATE :

Il semble que le problème ait été résolu avec les mises à jour du SDK. J'utilise maintenant la dernière com.google.firebase:firebase-messaging:9.6.1 je n'ai plus le message "MismatchSenderId".

8 votes

MismatchSenderId signifie que votre client s'inscrit sur un serveur différent de celui que vous utilisez pour envoyer. Tous vos clients s'enregistrent-ils auprès du même projet ? Pourriez-vous également inclure la réponse MismatchSenderId dans la question ?

1 votes

Oui, même projet, même application, même clé de serveur.

0 votes

Pourriez-vous montrer le code de la façon dont vous avez envoyé ce message ? Je pourrais connaître la cause du problème

49voto

Jinu P C Points 11

Firebase a mis à jour ses clés de serveur à la nouvelle version. Utilisez les nouvelles clés au lieu des anciennes.

allez dans paramètres->paramètres du projet->onglet messagerie cloud

enter image description here

2 votes

Il n'y a pas de différence si vous utilisez la clé du serveur ou la clé de l'ancien serveur.

29voto

Nauman Khan Points 131

J'ai trouvé cette solution :

  • D'abord, je vérifie que la clé du serveur est correcte ou non. comme AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • 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, le DeviceId que l'on a obtenu du côté d'Android en FCM est différent de GCM . Vous ne pouvez pas utiliser GCM créé DeviceId sur FCM .

0 votes

Vous m'avez beaucoup aidé. J'ai dû demander au développeur de l'application d'inclure l'identifiant de l'expéditeur dans le code, puis ma clé API FCM a fonctionné. Merci beaucoup.

3 votes

Lorsque nous mettons à niveau notre backend et notre application Android vers FCM, comment pouvons-nous alors envoyer une notification push aux utilisateurs qui sont déjà enregistrés avec des jetons GCM dans le backend. ?

1 votes

Le système FCM supporte les anciens jetons GCM développeurs.google.fr/cloud-messaging/faq

15voto

Dans mon cas, j'ai simplement fait une erreur sur les informations d'identification du projet : j'ai utilisé google-services.json dans un projet, et la clé du serveur dans un autre.

5voto

Flowra Points 679

J'ai trouvé que le senderId est différent du numéro de projet dans la console FCM
J'ai donc retéléchargé google-services.json et tout fonctionne bien.

4voto

Wild Points 21

Assurez-vous de supprimer tout le code Parse de votre application (bibliothèques, récepteurs dans AndroidManifest, etc.). J'ai constaté que, par intermittence, les notifications push ne fonctionnaient pas. D'après mes observations, cela fonctionne sur les nouvelles installations mais pas sur les mises à jour des applications depuis le Play Store.

Je pense que quelque chose d'interne à Parse entrait 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 retiré tous les récepteurs et bibliothèques de Parse, tout a fonctionné à merveille.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X