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 upewnić się, ż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, ponieważ polegają na zarządzaniu grupami urządzeń z serwerów, a nie bezpośrednio w aplikacji.
Możesz używać wiadomości grupowych urządzeń za pośrednictwem starszych protokołów XMPP lub HTTP na serwerze aplikacji. Starsze wersje pakietu Firebase Admin SDK dla Node.js są oparte na starszych protokołach i zapewniają również funkcje przesyłania wiadomości w grupach 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:
Uzyskaj tokeny rejestracji dla każdego urządzenia, które chcesz dodać do grupy.
Utwórz
notification_key
, który identyfikuje grupę urządzeń, mapując konkretną grupę (zwykle użytkownika) na wszystkie tokeny rejestracji skojarzone z grupą. 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. Listę obsługiwanych kluczy można znaleźć w dokumentacji starszego protokołu HTTP .
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 żądanie podobne do poniższego na 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ą unikalne dla grupy tokenów rejestracji. Jeśli masz wiele aplikacji klienckich dla tego samego identyfikatora nadawcy , ważne jest, aby notification_key_name
była unikatowa dla każdej aplikacji klienckiej. Gwarantuje to, że wiadomości trafiają tylko do zamierzonej aplikacji docelowej.
Format odpowiedzi
Pomyślne żądanie zwraca notification_key
podobny do następującego:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
Zapisz notification_key
i odpowiednią notification_key_name
do użycia w kolejnych operacjach.
Pobieranie klucza powiadomień
Jeśli chcesz odzyskać istniejący klucz powiadomienia, użyj nazwy 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. 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, 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
, należy wysłać to żądanie:
{
"operation": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
Format odpowiedzi
Pomyślne żądanie dodania lub usunięcia urządzenia zwraca następujący klucz notification_key
:
{ "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 parametr to
na unikalny klucz powiadomienia dla grupy urządzeń. Zobacz Typy wiadomości, aby uzyskać szczegółowe informacje na temat obsługi ładunku. Przykłady na tej stronie pokazują, jak wysyłać wiadomości z danymi do grup urządzeń w starszych 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 „sukcesu” — notification_key
ma powiązane z nim 2 tokeny rejestracji i wiadomość została pomyślnie wysłana do obu z nich:
{ "success": 2, "failure": 0 }
Oto przykład „częściowego sukcesu” — notification_key
ma powiązane z nim 3 tokeny rejestracji. Wiadomość została pomyślnie wysłana tylko do 1 z tokenów rejestracji. Komunikat odpowiedzi zawiera listę tokenów rejestracji ( identyfikatory registration_ids
), które nie otrzymały wiadomości:
{ "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 się między ponownymi 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 „sukcesu” — notification_key
ma powiązane 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
ma powiązane z nim 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 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.
Aby uzyskać pełną listę opcji wiadomości, zobacz informacje referencyjne dotyczące wybranego protokołu serwera połączeń, HTTP lub XMPP .