Wysyłanie wiadomości do grup urządzeń umożliwia dodawanie wielu urządzeń do jednej grupy. Jest to podobne do przesyłania wiadomości na temat, ale obejmuje uwierzytelnianie, aby zapewnić, że członkostwo w grupie jest zarządzane tylko przez 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 do odpowiednich grup i wysyłać odpowiednie wiadomości 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 obejmuje zarządzanie grupami urządzeń z poziomu serwerów, a nie bezpośrednio w aplikacji.
Maksymalna liczba członków dozwolona w przypadku klucza powiadomień to 20.
Zarządzanie grupami urządzeń
Zanim wyślesz wiadomości do grupy urządzeń, musisz:
- Uzyskaj tokeny rejestracji dla każdego urządzenia, które chcesz dodać do grupy.
- 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 v1 API, który używa krótkotrwałych tokenów do autoryzacji żądań wysyłania. Listę obsługiwanych kluczy znajdziesz w artykule Klucze zarządzania grupami 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 HTTP POST
Wyślij do https://fcm.googleapis.com/fcm/notification żądanie podobne do tego:
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), który jest unikalny dla danej grupy. Wartości notification_key_name i notification_key są unikalne dla grupy tokenów rejestracji. Ważne jest, aby wartość notification_key_name była unikalna dla każdej aplikacji klienckiej, jeśli masz kilka aplikacji klienckich 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, który wygląda mniej więcej tak:
{
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}
Zapisz notification_key i odpowiadający mu notification_key_name, aby użyć ich w kolejnych operacjach.
Pobieranie klucza powiadomienia
Jeśli chcesz pobrać istniejący klucz powiadomienia, użyj 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. Choć każdy ciąg znaków może wydawać się innym kluczem, w rzeczywistości jest to prawidłowa wartość notification_key.
Pobieram tokeny (FCM) dla grup urządzeń
Jeśli chcesz pobrać tokeny FCM należące do grupy urządzeń, użyj notification_key w żądaniu GET, jak pokazano poniżej:
https://fcm.googleapis.com/fcm/notification?notification_key=APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}
Odpowiedź wygląda tak:
{
"notification_key_name": "appUser-Chris",
"registration_ids": ["token1", "token2"]
}
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, które chcesz dodać lub usunąć.
Żądanie HTTP POST
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
Jeśli żądanie dodania lub usunięcia urządzenia zostanie zrealizowane, otrzymasz odpowiedź notification_key, która wygląda mniej więcej tak:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
Klucze zarządzania grupą urządzeń
W tabeli poniżej znajdziesz klawisze 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, add i remove. |
notification_key_name |
Wymagany, ciąg znaków | Zdefiniowana przez użytkownika nazwa grupy urządzeń, którą chcesz utworzyć lub zmodyfikować. |
notification_key |
Wymagane (z wyjątkiem operacji create, ciąg znaków) |
Unikalny identyfikator grupy urządzeń. Ta wartość jest zwracana w odpowiedzi na udaną operację create i jest wymagana we wszystkich kolejnych operacjach na grupie urządzeń. |
registration_ids |
Wymagane, tablica ciągów znaków | Tokeny urządzeń, które chcesz dodać lub usunąć. Jeśli usuniesz wszystkie istniejące 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 i wykorzystuje tę samą metodę autoryzacji żądań wysyłania.
W polu token ustaw 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