了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Wysyłaj wiadomości do grup urządzeń w Unity

Wiadomości grupowe urządzeń umożliwiają dodanie wielu urządzeń do jednej grupy. Jest to podobne do wysyłania wiadomości w temacie, ale obejmuje uwierzytelnianie, aby upewnić się, że członkostwo w grupie jest zarządzane tylko przez twoje serwery. Na przykład, jeśli chcesz wysyłać różne wiadomości do różnych modeli telefonów, Twoje serwery mogą dodawać/usuwać rejestracje do odpowiednich grup i wysyłać odpowiednią wiadomość do każdej grupy. Przesyłanie komunikatów grup urządzeń różni się od przesyłania komunikatów tematycznych tym, że obejmuje zarządzanie grupami urządzeń z serwerów, a nie bezpośrednio w aplikacji.

Możesz używać komunikatów grup urządzeń za pośrednictwem starszych protokołów XMPP lub HTTP na swoim serwerze aplikacji. Starsze wersje Firebase Admin SDK dla Node.js są oparte na starszych protokołach i zapewniają również możliwości przesyłania wiadomości w grupach urządzeń. Maksymalna dozwolona liczba członków dla klucza powiadomień to 20.

Zarządzanie grupami urządzeń

Przed wysłaniem wiadomości do grupy urządzeń musisz:

  1. Uzyskaj tokeny rejestracji dla każdego urządzenia, które chcesz dodać do grupy.

  2. Utwórz notification_key , który identyfikuje grupę urządzeń, mapując określoną grupę (zwykle użytkownika) na wszystkie powiązane tokeny rejestracji grupy. Możesz utworzyć klucze powiadomień na serwerze aplikacji.

Podstawowe zarządzanie grupami urządzeń — tworzenie i usuwanie grup oraz dodawanie i usuwanie urządzeń — odbywa się za pośrednictwem serwera aplikacji. Zobacz dokumentację starszego protokołu HTTP, aby zapoznać się z listą obsługiwanych kluczy.

Zarządzanie grupami urządzeń na serwerze aplikacji

Tworzenie grupy urządzeń

Aby utworzyć grupę urządzeń, wyślij żądanie POST zawierające nazwę grupy oraz listę tokenów rejestracji urządzeń. FCM zwraca nowy notification_key , który reprezentuje grupę urządzeń.

Żądanie HTTP POST

Wyślij prośbę podobną do poniższej do 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...",
                        ... ]

notification_key_name to nazwa lub identyfikator (np. może to być nazwa użytkownika), który jest unikalny dla danej grupy. notification_key_name i notification_key są unikatowe dla grupy tokenów rejestracji. Ważne jest, aby notification_key_name była unikatowa dla każdej aplikacji klienckiej, jeśli masz wiele aplikacji klienckich dla tego samego identyfikatora nadawcy . Dzięki temu wiadomości trafiają tylko do zamierzonej aplikacji docelowej.

Format odpowiedzi

Udane żądanie zwraca klucz notification_key , jak poniżej:

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

Zapisz notification_key i odpowiednią notification_key_name do użycia w kolejnych operacjach.

Pobieranie klucza powiadomień

Jeśli chcesz pobrać istniejący klucz powiadomienia, użyj notification_key_name w żądaniu GET, jak pokazano:

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

Dla każdego żądania GET dla danej nazwy klucza powiadomienia serwer zwraca unikalny zakodowany ciąg znaków. Chociaż każdy ciąg może wyglądać na inny klucz, w rzeczywistości jest to poprawna wartość `notification_key`.

Dodawanie i usuwanie urządzeń z grupy urządzeń

Aby dodać lub usunąć urządzenia z istniejącej grupy, wyślij żądanie POST z parametrem operation ustawionym na add lub remove i podaj tokeny rejestracji do dodania lub usunięcia.

Żądanie HTTP POST

Na przykład, aby dodać urządzenie z tokenem rejestracji bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... do appUser-Chris , wyślij to żądanie:

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

Format odpowiedzi

Udane żądanie dodania lub usunięcia urządzenia zwraca klucz notification_key podobny do następującego:

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

Wysyłanie komunikatów podrzędnych do grup urządzeń

Wysyłanie wiadomości do grupy urządzeń jest bardzo podobne do wysyłania wiadomości do pojedynczego urządzenia. Ustaw to to na unikatowy klucz powiadomienia dla grupy urządzeń. Zobacz Typy komunikatów , aby uzyskać szczegółowe informacje na temat obsługi ładunku. Przykłady na tej stronie pokazują, jak wysyłać komunikaty danych do grup urządzeń w starszych protokołach HTTP i XMPP.

Żądanie HTTP POST grupy urządzeń

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!",
   }
}

Odpowiedź HTTP grupy urządzeń

Oto przykład „sukcesu” — notification_key ma skojarzone z nim 2 tokeny rejestracji, a wiadomość została pomyślnie wysłana do obu z nich:

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

Oto przykład „częściowego sukcesu” — notification_key są powiązane 3 tokeny rejestracji. Wiadomość została pomyślnie wysłana tylko do 1 z tokenów rejestracji. Komunikat odpowiedzi zawiera listę tokenów rejestracji ( registration_ids ), które nie odebrały komunikatu:

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

Gdy komunikat nie zostanie dostarczony do co najmniej jednego tokenu rejestracji skojarzonego z notification_key , serwer aplikacji powinien ponowić próbę z wycofywaniem między kolejnymi próbami.

Jeśli serwer spróbuje wysłać wiadomość do grupy urządzeń, która nie ma członków, odpowiedź wygląda następująco: 0 sukcesów i 0 niepowodzeń:

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

Komunikat XMPP grupy urządzeń

<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>

Odpowiedź XMPP grupy urządzeń

Gdy wiadomość zostanie pomyślnie wysłana do dowolnego urządzenia w grupie, serwer połączeń XMPP odpowiada potwierdzeniem. Jeśli wszystkie wiadomości wysłane do wszystkich urządzeń w grupie zakończą się niepowodzeniem, serwer połączeń XMPP odpowie NACK.

Oto przykład „sukcesu” — notification_key ma skojarzone z nim 3 tokeny rejestracji, a wiadomość została pomyślnie wysłana do wszystkich z nich:

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

Oto przykład „częściowego sukcesu” — notification_key są powiązane 3 tokeny rejestracji. Wiadomość została pomyślnie wysłana tylko do 1 z tokenów rejestracji. Komunikat odpowiedzi zawiera listę tokenów rejestracji, które nie odebrały komunikatu:

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

Gdy serwer połączenia FCM nie dostarcza do wszystkich urządzeń w grupie. Serwer aplikacji otrzyma odpowiedź nack.

Pełną listę opcji wiadomości można znaleźć w informacjach referencyjnych dotyczących wybranego protokołu serwera połączeń, HTTP lub XMPP .

Wysyłanie komunikatów nadrzędnych do grup urządzeń

Aplikacje klienckie mogą wysyłać komunikaty w górę do grup urządzeń, kierując komunikaty do odpowiedniego klucza powiadomienia w polu to .

Następujące wywołanie FCM wysyła komunikat upstream do klucza powiadomienia.

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