Wysyłanie wiadomości do grup urządzeń

Wiadomości do grupy urządzeń umożliwiają dodanie wielu urządzeń do jednej grupy. Jest to podobne do wysyłania wiadomości do tematu, ale obejmuje uwierzytelnianie, aby mieć pewność, że członkostwem w grupie zarządzają tylko Twoje serwery. Jeśli na przykład chcesz wysyłać różne wiadomości do różnych modeli telefonów, serwery mogą dodawać lub usuwać rejestracje w odpowiednich grupach i wysyłać odpowiednią wiadomość do każdej grupy. Wysyłanie wiadomości do grup urządzeń różni się od wysyłania wiadomości do tematów tym, że wymaga zarządzania grupami urządzeń z serwerów, a nie bezpośrednio w aplikacji.

Maksymalna dozwolona liczba członków 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ń przez mapowanie konkretnej grupy (zwykle użytkownika) na wszystkie powiązane z nią tokeny rejestracji. Klucze powiadomień możesz tworzyć na serwerze aplikacji.

Podstawowe zarządzanie grupami urządzeń – tworzenie i usuwanie grup oraz dodawanie i usuwanie urządzeń – odbywa się za pomocą interfejsu HTTP API w wersji 1, przy użyciu krótkotrwałych tokenów do autoryzowania wysyłanych żądań. Listę obsługiwanych kluczy znajdziesz w sekcji Klucze zarządzania grupą urządzeń.

Zarządzanie grupami urządzeń na serwerze aplikacji

Tworzenie grupy urządzeń

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

Żądanie POST w protokole HTTP

Wyślij żądanie podobne do tego do https://fcm.googleapis.com/fcm/notification:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
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. nazwa użytkownika) unikalny w danej grupie. Znaki notification_key_namenotification_key są unikalne dla grupy tokenów rejestracji. Ważne jest, aby wartość notification_key_name była unikalna dla każdej aplikacji klienta, jeśli masz wiele aplikacji klienta dla tego samego identyfikatora nadawcy. Dzięki temu wiadomości będą trafiać tylko do docelowej aplikacji.

Format odpowiedzi

Pomyślne żądanie zwraca notification_key podobny do tego:

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

Zapisz notification_key i odpowiadający mu notification_key_name, aby użyć ich w kolejnych operacjach.

Pobieranie klucza powiadomień

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

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}

W przypadku każdego żądania GET dotyczącego danej nazwy klucza powiadomienia serwer zwraca unikalny zakodowany ciąg znaków. Chociaż każdy ciąg znaków może wyglądać jak inny klucz, jest to w rzeczywistości prawidłowa wartość notification_key.

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

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

Żądanie POST w protokole HTTP

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

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID

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

Prawidłowa prośba o dodanie lub usunięcie urządzenia zwraca notification_key podobny do tego:

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

Klucze zarządzania grupami urządzeń

W tabeli poniżej znajdziesz klucze służące do tworzenia grup urządzeń oraz dodawania i usuwania członków.

Parametr Wykorzystanie Opis
operation Wymagany, ciąg znaków Operacja do wykonania.Prawidłowe wartości to create, addremove.
notification_key_name Wymagany, ciąg znaków Nazwa grupy urządzeń zdefiniowana przez użytkownika, którą chcesz utworzyć lub zmodyfikować.
notification_key Wymagany (z wyjątkiem operacji create, ciąg znaków) Unikalny identyfikator grupy urządzeń. Ta wartość jest zwracana w odpowiedzi na operację create zakończoną powodzeniem i jest wymagana w przypadku wszystkich kolejnych operacji na grupie urządzeń.
registration_ids Wymagane, tablica ciągów znaków Tokeny urządzenia do dodania lub usunięcia. Jeśli usuniesz wszystkie tokeny rejestracji z grupy urządzeń, FCM usunie tę grupę.

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. Używa się tej samej metody autoryzowania żądań wysyłania. W polu tokenustaw klucz powiadomienia grupowego:

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
   "message":{
      "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
      "data":{
        "hello": "This is a Firebase Cloud Messaging device group message!"
      }
   }
}

Polecenie cURL

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
   "data":{
     "hello": "This is a Firebase Cloud Messaging device group message!"
   },
   "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send