Ich versuche, einen Push-Dienst für meine Android-App zu erstellen, und folge dazu der Dokumentation und dem Beispiel von Google GCM:
Ich kann meine Android-App registrieren / die Registrierung aufheben. Auf meiner Serverseite kann ich sehen, dass ein Abonnement registriert ist. Wenn ich jedoch versuche, eine Nachricht vom Server an meine Android-App zu senden, wird immer die folgende Fehlermeldung angezeigt:
Fehler beim Senden der Nachricht an Gerät Nr. 0: MismatchSenderId
Für meine Android-App verwende ich SENDER_ID = 200000000001.
Und für meine Serverseite verwende ich, wie Google sagt, API_KEY = AIzxxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXxxxx
Ich bin diesem Dokument gefolgt:
Ich habe GCM auch in meinem Google API-Bereich aktiviert, erhalte jedoch die nervige Fehlermeldung.
Wie kann ich dieses Problem beheben?
quelle
Antworten:
Hat Ihr Server die neue Registrierungs-ID verwendet, die vom GCM-Server an Ihre App zurückgegeben wurde? Ich hatte dieses Problem, wenn ich versuchte, eine Nachricht an Registrierungs-IDs zu senden, die vom alten C2DM-Server ausgegeben wurden.
Überprüfen Sie auch die Absender-ID und API_KEY. Sie müssen übereinstimmen. Andernfalls wird der Fehler MismatchSenderId angezeigt. Überprüfen Sie in der Google API-Konsole die URL Ihres Projekts:
https://code.google.com/apis/console/#project:xxxxxxxxxxx
Die xxxxxxxxx ist die Projekt-ID, die die Absender-ID ist.
Stellen Sie sicher, dass der API-Schlüssel zu "Schlüssel für Server-Apps (mit IP-Sperre)" gehört.
quelle
Eine Nichtübereinstimmung tritt auf, wenn Sie die numerische ID nicht verwenden. Projekt ID IST NICHT SENDER ID !! Ich habe 9 Stunden gebraucht, um das herauszufinden. Überprüfen Sie bei aller von Google verursachten Verwirrung den folgenden Link, um die numerische ID zu erhalten.
https://console.cloud.google.com
Anstatt von
https://console.developers.google.com
Ich hoffe es hilft!!
Update: - Die Dinge haben sich wieder geändert. Jetzt ist die Absender-ID mit Firebase.
Gehen Sie zu https://console.firebase.google.com und wählen Sie Ihr Projekt aus. Unter Einstellungen -> Cloud-Messaging finden Sie die Absender-ID.
Und es funktioniert!
quelle
Bitte führen Sie das folgende Skript in Ihrem Terminal aus
curl -X POST \ -H "Authorization: key= write here api_key" \ -H "Content-Type: application/json" \ -d '{ "registration_ids": [ "write here reg_id generated by gcm" ], "data": { "message": "Manual push notification from Rajkumar" }, "priority": "high" }' \ https://android.googleapis.com/gcm/send
Es wird die Nachricht angezeigt, wenn dies erfolgreich ist oder fehlgeschlagen ist
quelle
Ich bin kürzlich auf dasselbe Problem gestoßen und habe verschiedene Werte für "gcm_sender_id" basierend auf der Projekt-ID ausprobiert. Der Wert "gcm_sender_id" muss jedoch auf "Projektnummer" gesetzt werden.
Sie finden diesen Wert unter: Menü> IAM & Admin> Einstellungen.
Siehe Screenshot: GCM-Projektnummer
quelle
InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope)
AuthorizedEntity ist die Projektnummer des Servers
quelle
Ihre Android-App muss die 12-stellige Nummern-ID (auch bekannt als GCM-Projektnummer) korrigieren. Wenn diese 12-stellige Nummer falsch ist, wird auch dieser Fehler angezeigt.
Diese 12-stellige Nummer befindet sich in Ihrer Google Play Console unter Ihrer spezifischen App "Service & API" -> "VERBUNDENE SENDER-IDS".
quelle
Dies geschieht , wenn der Server - Schlüssel und S ender ID Parameter HTTP - Anforderung nicht zueinander passen. Grundsätzlich müssen sowohl die Server-ID als auch der Serverschlüssel zum selben Firebase-Projekt gehören. Bitte beachten Sie das folgende Bild. Wenn diese Parameter aus verschiedenen Firebase-Projekten gemischt werden, wird der Fehler MismatchSenderId verursacht
quelle
Überprüfen Sie die
google-services.json
Datei imapp
Ordner Ihres Android-Projekts. Generieren Sie eine neue über die Firebase-Konsole, wenn Sie sich nicht sicher sind. Ich habe diesen Fehler in zwei Fällen erhalten.Ich habe ein Test-Firebase-Projekt mit einer Testanwendung verwendet (die die richtige
google-services.json
Datei enthielt ). Dann habe ich versucht, eine Push-Benachrichtigung an eine andere Anwendung zu senden und habe diesen Fehler erhalten ('"error": "MismatchSenderId"'). Ich habe verstanden, dass die zweite Anwendung an ein anderes Firebase-Projekt mit einem anderen gebunden wargoogle-services.json
. Da die Serverschlüssel unterschiedlich sind, sollte die Anforderung neu geschrieben werden.Ich habe
google-services.json
die Anwendung geändert , weil ich das Test- Firebase-Projekt durch ein tatsächliches ersetzen wollte . Ich habe die richtigegoogle-services.json
Datei generiert , die Anfrage geändert, aber immer wieder diesen Fehler erhalten. Am nächsten Tag reparierte es sich. Ich vermute, dass Firebase nicht synchron aktualisiert wird.Um einen Serverschlüssel für die Anforderung zu erhalten, öffnen Sie https://console.firebase.google.com und wählen Sie ein geeignetes Projekt aus.
Fügen Sie es dann in die Anfrage ein.
quelle
Mit der Ablehnung von GCM und dem Entfernen seiner APIs scheint MismatchSenderId angezeigt zu werden, wenn Sie versuchen, GCM nach dem 29. Mai 2019 zu verwenden. Weitere Informationen finden Sie in den häufig gestellten Fragen zu Google GCM und FCM .
quelle
Verwenden Sie stattdessen die hier generierte Absender-ID und den API-Schlüssel: http://developers.google.com (suchen Sie zuerst nach Google Cloud Messaging und befolgen Sie die Anweisungen).
quelle
Wenn Sie es für natives Android verwenden, überprüfen Sie Ihre
AndroidMaifest.xml
Datei:<meta-data android:name="onesignal_google_project_number" android:value="str:1234567890" /> <!-- its is correct. -->
stattdessen
<meta-data android:name="onesignal_google_project_number" android:value="@string/google_project_number" />
Ich hoffe es hilft!!
quelle