Nachrichten an Gerätegruppen auf Android senden

Mit der Nachrichtenübermittlung für Gerätegruppen können Sie mehrere Geräte zu einer einzelnen Gruppe hinzufügen. Dies ähnelt dem Themen-Messaging, beinhaltet jedoch eine Authentifizierung, um sicherzustellen, dass die Gruppenmitgliedschaft nur von Ihren Servern verwaltet wird. Wenn Sie beispielsweise unterschiedliche Nachrichten an verschiedene Telefonmodelle senden möchten, können Ihre Server Registrierungen zu den entsprechenden Gruppen hinzufügen/entfernen und die entsprechende Nachricht an jede Gruppe senden. Gerätegruppen-Messaging unterscheidet sich von Themen-Messaging dadurch, dass Gerätegruppen von Ihren Servern aus verwaltet werden, anstatt direkt in Ihrer Anwendung.

Sie können Gerätegruppe Messaging über das Vermächtnis verwenden XMPP oder HTTP - Protokolle auf dem Applikationsserver. Firebase Admin SDK für Node.js basierend auf den Legacy - Protokolle auch Fähigkeiten Gerätegruppe Messaging bieten. Die maximale Anzahl von Mitgliedern für einen Benachrichtigungsschlüssel beträgt 20.

Gerätegruppen verwalten

Bevor Sie Nachrichten an eine Gerätegruppe senden, müssen Sie:

  1. Rufen Sie Registrierungstoken für jedes Gerät ab, das Sie der Gruppe hinzufügen möchten.

  2. Erstellen der notification_key , die durch Abbilden einer bestimmten Gruppe , die die Vorrichtungsgruppe identifiziert ( in der Regel ein Benutzer) auf alle zugehörigen Registrierungstoken der Gruppe. Sie können Benachrichtigungsschlüssel auf dem App-Server erstellen.

Die grundlegende Verwaltung von Gerätegruppen – das Erstellen und Entfernen von Gruppen sowie das Hinzufügen oder Entfernen von Geräten – erfolgt über den App-Server. Siehe das Erbe HTTP - Protokoll Referenz für eine Liste der unterstützten Tasten.

Gerätegruppen auf dem App-Server verwalten

Erstellen einer Gerätegruppe

Um eine Gerätegruppe zu erstellen, senden Sie eine POST-Anfrage, die einen Namen für die Gruppe und eine Liste der Registrierungstoken für die Geräte bereitstellt. FCM gibt eine neue notification_key , die die Gerätegruppe darstellt.

HTTP-POST-Anfrage

Senden Sie eine Anfrage wie die folgenden zu https://fcm.googleapis.com/fcm/notification :

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

Die notification_key_name ist ein Name oder Bezeichner (zB kann es sein , einen Benutzernamen) , die zu einer gegebenen Gruppe eindeutig ist. Die notification_key_name und notification_key sind einzigartig für eine Gruppe von Registrierungstoken. Es ist wichtig , dass notification_key_name pro Client - Anwendung eindeutig ist , wenn Sie mehrere Client - Anwendungen für die gleiche haben Sender - ID . Dadurch wird sichergestellt, dass Nachrichten nur an die beabsichtigte Ziel-App gesendet werden.

Antwortformat

Eine erfolgreiche Anforderung gibt eine notification_key wie folgt aus :

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Speichern Sie die notification_key und die entsprechenden notification_key_name zu Verwendung in nachfolgenden Operationen.

Abrufen eines Benachrichtigungsschlüssels

Wenn Sie eine vorhandene Benachrichtigung Schlüssel abzurufen, verwenden Sie die notification_key_name in einer GET - Anforderung wie folgt:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

Für jede GET-Anforderung für einen bestimmten Benachrichtigungsschlüsselnamen gibt der Server eine eindeutige codierte Zeichenfolge zurück. Obwohl jede Zeichenfolge als ein anderer Schlüssel erscheinen mag, ist es tatsächlich ein gültiger `notification_key`-Wert.

Hinzufügen und Entfernen von Geräten aus einer Gerätegruppe

Zum Hinzufügen oder Entfernen Geräte aus einer bestehenden Gruppe, eine POST - Anforderung mit dem schicken operation Parametersatz add oder remove , und geben Sie die Registrierungstoken für das Hinzufügen oder Entfernen.

HTTP-POST-Anfrage

Zum Beispiel ein Gerät mit den Registrierungstoken hinzufügen bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... zu appUser-Chris , würden Sie diese Anfrage senden:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

Antwortformat

Eine erfolgreiche Anforderung , um entweder mehr oder ein Gerät entfernen gibt eine notification_key wie die folgenden:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Senden von Downstream-Nachrichten an Gerätegruppen

Das Senden von Nachrichten an eine Gerätegruppe ist dem Senden von Nachrichten an ein einzelnes Gerät sehr ähnlich. Stellen Sie den to Parameter der einzigartigen Benachrichtigung Schlüssel für die Gerätegruppe. Siehe Nachrichtentypen für Details auf Nutzlast Unterstützung. Beispiele auf dieser Seite zeigen, wie Datennachrichten an Gerätegruppen in HTTP- und XMPP-Protokollen gesendet werden.

HTTP-POST-Anfrage für Gerätegruppe

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

HTTP-Antwort der Gerätegruppe

Hier ist ein Beispiel für „Erfolg“ - das notification_key hat 2 Registrierung Token mit ihm verbunden, und die Nachricht wurde erfolgreich an beide gesendet:

{
  "success": 2,
  "failure": 0
}

Hier ist ein Beispiel für eine „Teilerfolg“ - die notification_key hat 3 Registrierung Token mit ihm verbunden ist . Die Nachricht wurde nur an 1 der Registrierungstoken erfolgreich gesendet. Die Antwortnachricht listet die Registrierungstoken ( registration_ids ), die die Nachricht erhalten fehlgeschlagen:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Wenn eine Nachricht an einen oder mehrere der Eintragung geliefert werden nicht mit einem zugehörigen Token notification_key , sollte die App - Server mit Backoff zwischen Wiederholungen wiederholen.

Wenn der Server versucht, eine Nachricht an eine Gerätegruppe zu senden, die keine Mitglieder hat, sieht die Antwort wie folgt aus, mit 0 erfolgreich und 0 fehlgeschlagen:

{
  "success": 0,
  "failure": 0
}

Gerätegruppen-XMPP-Nachricht

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

XMPP-Antwort der Gerätegruppe

Wenn die Nachricht erfolgreich an eines der Geräte in der Gruppe gesendet wurde, antwortet der XMPP-Verbindungsserver mit einem ACK. Wenn alle an alle Geräte in der Gruppe gesendeten Nachrichten fehlschlagen, antwortet der XMPP-Verbindungsserver mit einem NACK.

Hier ist ein Beispiel für „Erfolg“ - das notification_key hat 3 Registrierung Token mit ihm verbunden, und die Nachricht wurde erfolgreich auf alle von ihnen gesendet:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

Hier ist ein Beispiel für eine „Teilerfolg“ - die notification_key hat 3 Registrierung Token mit ihm verbunden ist . Die Nachricht wurde nur an 1 der Registrierungstoken erfolgreich gesendet. Die Antwortnachricht listet die Registrierungstoken auf, die die Nachricht nicht erhalten haben:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Wenn der FCM-Verbindungsserver nicht an alle Geräte in der Gruppe liefert. Der App-Server erhält eine Nack-Antwort.

Für die vollständige Liste der Nachrichten - Optionen finden Sie in die Referenzinformationen für das gewünschte Verbindungsserver - Protokoll, HTTP oder XMPP .