Ich habe eine Anwendung, die Google FCM zum Senden von Push-Benachrichtigungen verwendet.
Wenn ich eine Push-Benachrichtigung an eine Gruppe von Benutzern sende, erhalte ich MismatchSenderId
für einige von ihnen eine Antwort . Obwohl alle Benutzer genau die gleiche Anwendung haben. Wie können einige Benutzer eine Erfolgsantwort erhalten und andere eine MismatchSenderId?
Ich habe viel recherchiert und sichergestellt, dass ich alle Voraussetzungen hinzugefügt habe, die FCM benötigt.
Irgendwelche Vorschläge?
BEARBEITEN:
Beispielantwort:
{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
EDIT 2:
Hier ist der serverseitige Sendecode (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 );
AKTUALISIEREN:
Es scheint, dass das Problem mit den SDK-Updates behoben wurde. Ich benutze jetzt die neueste com.google.firebase:firebase-messaging:9.6.1
, ich bekomme nicht mehr "MismatchSenderId".
quelle
Server Key
(in der Firebase-Konsole auf der Registerkarte Server zu finden) und nichtAPI_KEY
von stammtgoogle-service.json
. Stellen Sie zweitens sicher, dass Sie das Ziel richtig eingestellt haben.to" : "/topics/yourtopic"
Wenn Sie beispielsweise eine Nachricht an alle Geräte senden möchten (diese sollten zuerst dieses Thema abonnieren). Oder versuchen Sie, an ein bestimmtes Gerät zu senden, dann müssen Sie dascec5gH04....92IyHrB2K
Antworten:
Firebase hat seine Serverschlüssel auf eine neue Version aktualisiert. Verwenden Sie neue Schlüssel anstelle von alten.
quelle
Ich habe diese Lösung gefunden:
quelle
Das hat für mich funktioniert:
Ich habe den Serverschlüssel aus einem anderen Firebase-Projekt verwendet (z. B. Projekt 2). Ich habe den gleichen Serverschlüssel verwendet, der mit meinem Android-Projekt (Say Project 1) verknüpft war, und es hat funktioniert. Nach meiner Erfahrung schien die Verwendung einer Firebase-App für ein gesamtes Android-Projekt das Problem zu beheben.
quelle
In meinem Fall habe ich mich nur über Projektanmeldeinformationen geirrt: Verwenden von google-services.json aus einem Projekt und Serverschlüssel aus einem anderen.
quelle
Nur zu Ihrer Information. Ich bin auf diesen Fehler gestoßen, obwohl ich schwöre, dass die von mir getestete Android-App mit der neuesten / besten Datei google-services.json erstellt wurde und ich sie von der FCM-Konsole an die App senden konnte. Ich habe die App nach a neu erstellt
Clean Project
und kann sie jetzt mit dem registrierten FCM-Token an die App senden. Versuchen Sie also vielleicht einen sauberen Wiederaufbau, bevor Sie Ihren Kopf zu lange gegen die Wand schlagen.quelle
Wir haben Stunden und Stunden damit verbracht, dieses Problem zu beheben. Wir haben festgestellt, dass das Token mit verschiedenen FCM-Kontoeinstellungen (google-services.json) generiert und die Benachrichtigung mit einem anderen FCM-Konto festgelegt wurde. Als wir beide synchronisierten, funktionierte es wie ein Zauber.
quelle
Ich habe festgestellt, dass sich das
senderId
von der Projektnummer in der FCM-Konsole unterscheidet,also habe ich google-services.json erneut heruntergeladen und alles funktioniert einwandfrei
quelle
Mein Problem wurde durch Eingabe des richtigen Schlüssels wie unten gezeigt gelöst.
Kopieren Sie den Serverschlüssel wie in diesem Bild
Und dann kopieren Sie diesen Code in Postmann wie dieses Bild
und Körper ist Reihe wie dieses Bild
HINWEIS:
quelle
Ich habe alle Anmeldeinformationen überprüft
Neuer Serverschlüssel hinzugefügt und alter gelöscht
Google-services.json erneut heruntergeladen
Nichts hat das Problem gelöst
Dann bereinige ich einfach das Projekt und erstelle das Projekt neu. Danach funktioniert es einwandfrei
quelle
Stellen Sie sicher, dass Sie den gesamten Parse-Code aus Ihrer App entfernen (Bibliotheken, Empfänger in AndroidManifest usw.). Ich stellte fest, dass zeitweise Push-Benachrichtigungen nicht funktionierten. Nach meinen Beobachtungen würde es bei Neuinstallationen funktionieren, aber nicht bei App-Updates aus dem Play Store.
Ich glaube, dass etwas in Parse intern mit FCM in Konflikt stand (Parse verwendet GCM, also schätze ich, dass es mit der gleichzeitigen Verwendung von GCM und FCM zu tun hat). Sobald ich alle Parse-Empfänger und -Bibliotheken herausgerissen hatte, funktionierten die Dinge großartig.
quelle
Tatsächlich gibt es viele Gründe für dieses Problem. Meins wurde wegen ungültigem Token übergeben. Ich habe dasselbe Token übergeben, das von einer App generiert wurde, und dasselbe Token in einer anderen App verwendet. Sobald das Token aktualisiert wurde, funktioniert es für mich.
quelle
Um diesen Fehler bei nicht übereinstimmender Absender-ID in fcm zu beseitigen
{"multicast_id":7751536172966571167,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
es ist ein Fehler aufgetreten,
Daher mussten wir zuerst in FCM die Anwendung registrieren, z. B. MyDemoApplication
Danach generiert FCM den Serverschlüssel, dh die
AIzaSyB9krC8mLHzO_TtECb5qg7NDZPxeG03jHU
Absender-ID346252831806
dieses Format wie dieses.Nach In Android Studio stellt unser Projekt eine Verbindung zu diesem von FCM erstellten Projekt her, dh MyDemoApplication
Und der wichtigste Schritt ist das Gerätetoken oder die Registrierungs-ID. Diese Token müssen in Android Studio erstellt werden.
Nach der Verwendung der Absender-ID und des API-Schlüssels im Web-API-Projekt erhalten Sie definitiv eine Benachrichtigung
quelle
Überprüfen Sie gcm_sender_id in manifest.json. Wenn nicht übereinstimmend - korrekt, aber Sie müssen neue Abonnenten für die neue Absender- ID erstellen . Besteht Abonnenten Pause.
quelle
Gemäß der Antwort "MismatchSenderId" ist dies eine Nichtübereinstimmung zwischen FireBase und Ihrer lokalen "google-services.json". Sie müssen sicherstellen, dass beide Manifeste übereinstimmen
In der FireBase-Konsole gehen Sie zu "YourProject> Project OverView> Cloud Messaging" und sehen die "SenderID", die mit der "google-services.json" in Ihrem Android-Projekt übereinstimmen muss.
Das Beste, was Sie tun können, ist, die endgültige JSON-Datei von der Registerkarte "Allgemein" herunterzuladen und in Ihr Projekt einzufügen.
quelle
Ich hatte den gleichen Fehler beim Versuch, eine Push-Benachrichtigung zu senden. Holen Sie sich die aktualisierte Datei google-services.json und ersetzen Sie sie durch diese. Hat für mich gearbeitet.
quelle
Ich hatte das gleiche Problem und habe es folgendermaßen behoben:
Voila ...
quelle
Das Aktualisieren der Firebase-Initialisierung funktioniert bei mir.
quelle
Für mich war das Problem, dass ich die
phonegap-plugin-push
in cordova verwendete und die App mit der Phonegap-App testete.Das Problem dabei ist, dass die Phonegap-App dieses Plugins aus irgendeinem Grund abfängt und einen Dummy-Registrierungsschlüssel zurückgibt, unabhängig davon, welche Absender-ID Sie haben.
Damit es funktioniert (solange Sie alle Schlüssel richtig haben), müssen Sie Ihr Programm auf eine andere Weise testen, mit einem Emulator oder einer Android-Emulation über USB. Und Ihre Schlüssel werden übereinstimmen.
Hoffentlich spart dies jemandem etwas Zeit.
quelle
Sie tun wahrscheinlich, was ich getan habe. GCM-Token ist nicht mehr dasselbe wie FCM. Überprüfen Sie, ob Sie die GCM-Token-ID anstelle von FCM abrufen. Überschreiben Sie einfach FirebaseInstanceIdService und stellen Sie sicher, dass Sie die richtige ID erhalten. Ich dachte einmal, sie wären gleich, aber jetzt nicht mehr. Ich loggte einen Test und sah. Nachdem Sie dies getan haben, aktualisieren Sie auch google-services.json, wie andere aus Sicherheitsgründen sagen.
quelle
Ich habe Tage damit verschwendet.
In meinem Fall bin ich diesem Blog gefolgt , um Postman zu verwenden und den Fehler mismatchsenderid zu erhalten. Zuvor bekam ich
messaging/mismatched-credential
und die Leute berichteten, dass ihre Client-App mehrere Projekte verwendet.Für mich habe ich jedoch eins zu eins, eine Web-App und ein Projekt. ABER ich
ng serve
hoste alle Apps über den Standardport 4200. Unabhängig davon, auf welchem Projekt / App-Paar ich mich entwickelt habe, habe ich immer das gleiche Token von meiner Client-Web-App erhaltenAngularFireMessaging.requestToken
- dieses Token war immer das Token, das bei meinem ersten Erstellen erstellt wurde Ausführen einer Firebase-App in Entwicklung.Als Workaround starte ich verschiedene Apps / Projekte an verschiedenen Ports und erhalte die richtigen Token für die jeweiligen Projekte.
quelle
Hinweis: Ich hatte den ersten Teil des FCM-Tokens (zuvor
:
) abgeschnitten und der Fehler warMismatchSenderId
Mein Skript wurde korrigiert und jetzt funktioniert alles einwandfrei.
quelle
In meinem Fall hatte jemand APN-SSL-Zertifikate für meine App im Apple-Entwicklungsportal gelöscht.
Dies löste das Problem.
quelle
In meinem Fall war es sehr einfach. Ich habe die falsche Registrierungs-ID aus der Datenbank abgerufen. Nachdem ich die richtige ID gezogen hatte, funktionierte es.
quelle
Ich hatte das gleiche Problem in meinem Projekt "react-native - node.js". Ich wollte Benachrichtigungen in Android senden. Alles war eingerichtet und funktionierte einwandfrei (dh ich konnte Benachrichtigungen von node.js senden und Benachrichtigungen auf einem Android-Gerät empfangen).
Nach ein paar Tagen musste ich ein anderes Firebase-Konto verwenden, also änderte ich die Datei google-services.json im Android- / App- Ordner meines Projekts und erstellte das Projekt neu. Als ich jedoch erneut versuchte, eine Benachrichtigung von meinem Server zu senden, wurde eine Fehlermeldung angezeigt:
Lösung:
die XML - Datei an der Stelle - app / build / erzeugt / res / google-services / {} build_type /values/values.xml wurde nicht automatisch aktualisiert , immer nach neuen Google-services.json . Es bestand immer noch aus alten Werten aus meiner vorherigen Datei google-services.json . Ich musste values.xml ändern Datei manuell .
So sieht die Datei app / build / generate / res / google-services / {build_type} /values/values.xml aus (Sie müssen sie manuell ändern, wenn sie nicht automatisch gemäß google-services.json aktualisiert wird ) -
Sie können auf diese Links verweisen:
quelle
Ich hatte große Probleme herauszufinden, warum ich den Status "MismatchSenderId" erhielt. Ich habe die gms-Abhängigkeit im Stammverzeichnis hinzugefügt,
build.gradle
aber mein Fehler bestand darin, das gms-Plugin in der App nicht anzuwendenbuild.gradle
.Wenn Sie diese Zeile nicht in der App haben
build.gradle
, kann dies der Grund sein, warum die Benachrichtigung nicht funktioniert:apply plugin: 'com.google.gms.google-services'
quelle
Ich habe festgestellt, dass Sie beim Erstellen einer Geräte-ID in GCM keine Push-Nachrichten über FCM mit dem neuen Serverschlüssel senden können, sondern den alten API-Schlüssel verwenden müssen.
quelle
Ich habe versucht, eine Benachrichtigung über die fcm-API "https://fcm.googleapis.com/fcm/send" vom Postboten zu senden. Der Serverschlüssel war in Ordnung und das Token wurde gut eingefügt, aber es wurde immer noch der Fehler "MismatchSenderId" angezeigt.
Dann führte die folgende Abhängigkeit in der Gradle-Datei auf der Android-Seite.
und es wurden Benachrichtigungen auf dem Gerät empfangen
quelle
Ich bekomme auch den gleichen Fehler. Ich habe den api_key kopiert und in google_services.json geändert. danach funktioniert es für mich
Versuche dies
quelle
Sie haben einen Serverschlüssel wie diesen AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-KVY im Abschnitt Einstellungen der firebase console console.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging .
Geben Sie den richtigen Schlüssel mit Ihrem Code an und versuchen Sie es erneut.
quelle