Wie senden Sie eine Firebase-Benachrichtigung über CURL an alle Geräte?

Ich versuche, eine Benachrichtigung an alle App-Benutzer (unter Android) zu senden. Dabei wird im Wesentlichen dupliziert, was passiert, wenn eine Benachrichtigung über die Firebase-Administratorkonsole gesendet wird. Hier ist der CURL-Befehl, mit dem ich beginne:

curl --insecure --header "Authorization: key = AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM" --header "Content-Type: application / json" -d "{\" notification \ ": {\" title \ ": \" note-Title \ ", \" body \ ": \" note-Body \ "}"https: //fcm.googleapis.com/fcm/sen

Hier ist, dass JSON analysiert, um Ihre Augen zu schonen:

{
"notification":{
    "title":"note-Title",
    "body":"note-Body"
    }
}

Die Antwort, die zurückkommt, besteht nur aus zwei Zeichen:

z

Das ist es, das Wort "zu". (Header melden eine 400) Ich vermute, dies hat damit zu tun, dass ich in meinem JSON kein "to" habe. Was würde man überhaupt für ein "zu" setzen? Ich habe keine Themen definiert und die Geräte haben sich für nichts registriert. Sie können jedoch weiterhin Benachrichtigungen vom Firebase-Verwaltungsbereich empfangen.

Ich möchte aufgrund der erstaunlichen Einschränkung der Firebase-Benachrichtigungsverarbeitung ein "Nur-Daten" -JSON-Paket versuchen. Befindet sich Ihre App im Vordergrund, wird die Benachrichtigung von IHREM Handler verarbeitet. Befindet sich Ihre App jedoch im Hintergrund, wird sie verarbeitet wird INTERN vom Firebase-Dienst verarbeitet und niemals an Ihren Benachrichtigungs-Handler weitergeleitet. Dies kann augenscheinlich umgangen werden, wenn Sie Ihre Benachrichtigungsanforderung über die API senden, jedoch NUR, wenn Sie dies nur mit Daten tun. (Dies beeinträchtigt dann die Fähigkeit, iOS und Android mit der gleichen Nachricht zu behandeln.) Das Ersetzen von "Benachrichtigung" durch "Daten" in einem meiner JSON-Programme hat keine Auswirkung.

Ok, dann habe ich hier die Lösung versucht:Firebase Java Server zum Senden einer Push-Benachrichtigung an alle Geräte scheint mir zu sagen "Ok, obwohl Benachrichtigungen an alle über die Admin-Konsole möglich sind ... ist dies nicht wirklich über die API möglich." Die Problemumgehung besteht darin, dass jeder Client ein Thema abonniert und die Benachrichtigung dann an dieses Thema weiterleitet. Also zuerst den Code in onCreate:

FirebaseMessaging.getInstance().subscribeToTopic("allDevices");

dann sende ich den neuen JSON:

{
"notification":{
    "title":"note-Title",
    "body":"note-Body"
    },
"to":"allDevices"
}

So jetzt bekomme ich zumindest eine echte Antwort vom Server. JSON-Antwort:

{
"multicast_id":463numbersnumbers42000,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
    [
    {
    "error":"InvalidRegistration"
    }
    ]
}

Und das kommt mit einem HTTP-Code 200. Ok ... lauthttps: //firebase.google.com/docs/cloud-messaging/http-server-re Ein 200-Code mit "InvalidRegistration" bedeutet ein Problem mit dem Registrierungstoken. Könnte sein? Weil dieser Teil der Dokumentation für den Nachrichtenserver bestimmt ist. Ist der Benachrichtigungsserver derselbe? Unklar. Ich sehe anderswo, dass das Thema Stunden dauern kann, bevor es aktiv ist. Es scheint so, als würde es unbrauchbar werden, um neue Chatrooms zu erstellen.

Ich war ziemlich aufgeregt, als ich eine App von Grund auf neu programmieren konnte, die innerhalb weniger Stunden Benachrichtigungen erhielt, als ich Firebase noch nie zuvor verwendet hatte. Es sieht so aus, als hätte es noch einen langen Weg vor sich, bis es beispielsweise die Ebene der Stripe.com-Dokumentation erreicht.

Unterste Zeile: Weiß jemand, welchen JSON-Code er bereitstellen muss, um eine Nachricht an alle Geräte zu senden, auf denen die App ausgeführt wird, um die Funktionalität der Admin-Konsole zu spiegeln?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage