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

Wiadomości grupowe urządzeń umożliwiają dodawanie wielu urządzeń do jednej grupy. Jest to podobne do przesyłania wiadomości tematowych, ale obejmuje uwierzytelnianie, aby zapewnić, że członkostwo w grupie jest zarządzane tylko przez serwery. Na przykład, jeśli chcesz wysł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. Komunikaty grup urządzeń różnią się od komunikatów tematów tym, że polegają na zarządzaniu grupami urządzeń z serwerów, a nie bezpośrednio w aplikacji.

Można korzystać z wiadomości za pośrednictwem grupy urządzeń starszego XMPP lub HTTP protokołów na serwerze aplikacji. Firebase Admin SDK dla node.js na podstawie protokołów starszych również zapewniają możliwości komunikatorów grupy urządzeń. Maksymalna liczba członków dozwolonych dla klucza powiadomienia 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. Tworzenie notification_key , który identyfikuje grupę urządzeń poprzez mapowanie konkretnej grupy (zazwyczaj) do obsługi wszystkich stowarzyszonych tokenów rejestracyjnych grupy. Możesz tworzyć klucze powiadomień na serwerze aplikacji.

Podstawowe zarządzanie grupami urządzeń — tworzenie i usuwanie grup oraz dodawanie lub usuwanie urządzeń — odbywa się za pośrednictwem serwera aplikacji. Zobacz dziedzictwo odniesienie protokołu HTTP na listę obsługiwanych klawiszy.

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 dla urządzeń. FCM zwraca nowy notification_key który reprezentuje grupę urządzeń.

Żądanie HTTP POST

Wyślij wniosek takiego 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 jest nazwą i identyfikator (na przykład może to być użytkownika), który jest unikatowy dla danej grupy. notification_key_name i notification_key są unikalne dla grupy tokenów rejestracyjnych. Ważne jest, że notification_key_name jest unikalny na aplikacji klienckiej, jeśli masz wiele aplikacji klienckich do tego samego nadawcy ID . Zapewnia to, że wiadomości trafiają tylko do zamierzonej aplikacji docelowej.

Format odpowiedzi

Udana prośba zwraca notification_key tak:

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

Zapisz notification_key i odpowiadającą notification_key_name do wykorzystania w kolejnych operacjach.

Pobieranie klucza powiadomień

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

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. Chociaż każdy ciąg może wydawać się innym kluczem, w rzeczywistości jest to prawidłowa wartość „notification_key”.

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

Aby dodać lub usunąć urządzenia z istniejącej grupy, należy wysłać żądanie POST z operation zestawu parametrów do add lub remove i dostarczają znaki rejestracyjne do dodania lub usunięcia.

Żądanie HTTP POST

Na przykład, aby dodać urządzenie z rejestracją tokena bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... do appUser-Chris , chcesz wysłać tę prośbę:

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

Format odpowiedzi

Udana prośba albo dodać lub usunąć urządzenie zwraca notification_key jak następuje:

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

Wysyłanie wiadomości 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 parametru do unikalnego klucza powiadomień dla grupy urządzeń. Zobacz typów komunikatów Szczegółowe informacje na temat wsparcia ładunku. Przykłady na tej stronie pokazują, jak wysyłać wiadomości z danymi do grup urządzeń w protokołach HTTP i XMPP.

Żądanie POST HTTP 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 z „sukcesu” - w notification_key ma 2 znaki rejestracyjne związane z nim, a wiadomość została wysłana do obu z nich:

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

Oto przykład z „częściowy sukces” - w notification_key ma 3 Rejestracja żetony z nim związane. Wiadomość została pomyślnie wysłana tylko do 1 z tokenów rejestracji. Wykazy wiadomość odpowiedź tokenów rejestracyjne ( registration_ids ), które nie otrzymały wiadomość:

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

Gdy wiadomość nie być dostarczane do jednego lub więcej z rejestracją żetony związany z notification_key , serwer aplikacji należy powtórzyć z backoff między próbami.

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

{
  "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 ACK. Jeśli wszystkie wiadomości wysłane do wszystkich urządzeń w grupie zawiodą, serwer połączeń XMPP odpowiada NACK.

Oto przykład z „sukcesu” - w notification_key ma 3 znaki rejestracyjne związane z nim, a wiadomość została wysłana do wszystkich z nich:

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

Oto przykład z „częściowy sukces” - w notification_key ma 3 Rejestracja żetony z nim związane. Wiadomość została pomyślnie wysłana tylko do 1 z tokenów rejestracji. Komunikat odpowiedzi zawiera listę tokenów rejestracji, które nie otrzymały wiadomości:

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

Gdy serwer połączeń FCM nie może dostarczyć do wszystkich urządzeń w grupie. Serwer aplikacji otrzyma odpowiedź nack.

Pełen wykaz opcji wiadomości, zapoznaj się z informacjami odniesienia dla wybranego połączenia, serwer protokołu HTTP lub XMPP .