Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Senden Sie Nachrichten an Gerätegruppen in Unity

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Gerätegruppen-Messaging ermöglicht es Ihnen, mehrere Geräte zu einer einzelnen Gruppe hinzuzufügen. Dies ähnelt dem Themen-Messaging, beinhaltet jedoch eine Authentifizierung, um sicherzustellen, dass die Gruppenmitgliedschaft nur von Ihren Servern verwaltet wird. Wenn Sie beispielsweise verschiedene 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. Das Messaging von Gerätegruppen unterscheidet sich vom Topic-Messaging dadurch, dass es die Verwaltung von Gerätegruppen von Ihren Servern und nicht direkt in Ihrer Anwendung umfasst.

Sie können Gerätegruppennachrichten über die alten XMPP- oder HTTP -Protokolle auf Ihrem App-Server verwenden. Ältere Versionen des Firebase Admin SDK für Node.js basieren auf den Legacy-Protokollen und bieten auch Nachrichtenfunktionen für Gerätegruppen. Die maximal zulässige Anzahl von Mitgliedern für einen Benachrichtigungsschlüssel beträgt 20.

Verwalten von Gerätegruppen

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 Sie den notification_key , der die Gerätegruppe identifiziert, indem er eine bestimmte Gruppe (normalerweise ein Benutzer) allen zugeordneten Registrierungstoken der Gruppe zuordnet. Sie können Benachrichtigungsschlüssel auf dem App-Server erstellen.

Die grundlegende Verwaltung von Gerätegruppen – Erstellen und Entfernen von Gruppen sowie Hinzufügen oder Entfernen von Geräten – erfolgt über den App-Server. Eine Liste der unterstützten Schlüssel finden Sie in der Legacy -HTTP-Protokollreferenz .

Verwalten von Gerätegruppen auf dem App-Server

Erstellen einer Gerätegruppe

Um eine Gerätegruppe zu erstellen, senden Sie eine POST-Anforderung, die einen Namen für die Gruppe und eine Liste mit Registrierungstoken für die Geräte enthält. FCM gibt einen neuen notification_key zurück, der die Gerätegruppe darstellt.

HTTP-POST-Anforderung

Senden Sie eine Anfrage wie die folgende an 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...",
                        ... ]

Der notification_key_name ist ein Name oder eine Kennung (z. B. kann es ein Benutzername sein), der für eine gegebene Gruppe eindeutig ist. Der notification_key_name und der notification_key sind für eine Gruppe von Registrierungstoken eindeutig. Es ist wichtig, dass notification_key_name pro Client-App eindeutig ist, wenn Sie mehrere Client-Apps für dieselbe Absender-ID haben. Dadurch wird sichergestellt, dass Nachrichten nur an die vorgesehene Ziel-App gehen.

Antwortformat

Eine erfolgreiche Anfrage gibt einen notification_key wie den folgenden zurück:

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

Speichern Sie den notification_key und den entsprechenden notification_key_name zur Verwendung in nachfolgenden Vorgängen.

Abrufen eines Benachrichtigungsschlüssels

Wenn Sie einen vorhandenen Benachrichtigungsschlüssel abrufen müssen, verwenden Sie den notification_key_name in einer GET-Anforderung wie gezeigt:

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 eindeutig codierte Zeichenfolge zurück. Obwohl jede Zeichenfolge wie ein anderer Schlüssel aussieht, handelt es sich tatsächlich um einen gültigen `notification_key`-Wert.

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

Um Geräte zu einer bestehenden Gruppe hinzuzufügen oder daraus zu entfernen, senden Sie eine POST-Anforderung mit dem auf add or remove gesetzten operation und geben Sie die Registrierungstoken zum Hinzufügen oder Entfernen an.

HTTP-POST-Anforderung

Um beispielsweise ein Gerät mit dem Registrierungstoken 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 zum Hinzufügen oder Entfernen eines Geräts gibt einen notification_key wie den folgenden zurück:

{
   "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. Legen Sie den to -Parameter auf den eindeutigen Benachrichtigungsschlüssel für die Gerätegruppe fest. Einzelheiten zur Payload-Unterstützung finden Sie unter Nachrichtentypen . Beispiele auf dieser Seite zeigen, wie Datennachrichten an Gerätegruppen in den Legacy-Protokollen HTTP und XMPP gesendet werden.

HTTP-POST-Anfrage der 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“ – dem notification_key sind zwei Registrierungstoken zugeordnet, und die Nachricht wurde erfolgreich an beide gesendet:

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

Hier ist ein Beispiel für „partiellen Erfolg“ – dem notification_key sind 3 Registrierungstoken zugeordnet. Die Nachricht wurde erfolgreich nur an 1 der Registrierungstoken gesendet. Die Antwortnachricht listet die Registrierungstokens ( registration_ids ) auf, die die Nachricht nicht erhalten haben:

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

Wenn eine Nachricht nicht an einen oder mehrere Registrierungstoken zugestellt werden kann, die mit einem notification_key verknüpft sind, sollte der App-Server es mit einem Backoff zwischen den Wiederholungen erneut versuchen.

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

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

XMPP-Nachricht der Gerätegruppe

<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“ – dem notification_key sind 3 Registrierungstoken zugeordnet, und die Nachricht wurde erfolgreich an alle gesendet:

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

Hier ist ein Beispiel für „partiellen Erfolg“ – dem notification_key sind 3 Registrierungstoken zugeordnet. Die Nachricht wurde erfolgreich nur an 1 der Registrierungstoken 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 liefern kann. Der App-Server erhält eine NACK-Antwort.

Die vollständige Liste der Nachrichtenoptionen finden Sie in den Referenzinformationen für das von Ihnen gewählte Verbindungsserverprotokoll, HTTP oder XMPP .

Senden von Upstream-Nachrichten an Gerätegruppen

Client-Apps können Nachrichten stromaufwärts an Gerätegruppen senden, indem sie Nachrichten an den entsprechenden Benachrichtigungsschlüssel im Feld „ to “ richten.

Der folgende Aufruf an FCM sendet eine Upstream-Nachricht an eine Benachrichtigungstaste.

Firebase.Messaging.Message message;
message.To = notification_key;
message.MessageId = a_unique_message_id;
message.Data["hello"] = "world";
Firebase.Messaging.FirebaseMessaging.Send(message);