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

Wiadomości w grupie urządzeń umożliwiają dodanie wielu urządzeń do jednej grupy. Przypomina to przesyłanie wiadomości na tematy, ale obejmuje uwierzytelnianie, dzięki któremu Członkostwem w grupie zarządzają wyłącznie Twoje serwery. Jeśli chcesz na przykład wysyłać różne wiadomości do różnych modeli telefonów, Twoje serwery mogą dodawać/usuwać do odpowiednich grup i wysyłaj odpowiednie wiadomości grupy reklam. Wysyłanie wiadomości w grupie urządzeń różni się od wiadomości tematycznej tym, że obejmuje i zarządzanie grupami urządzeń z poziomu serwerów, a nie bezpośrednio w aplikacji.

Klucz powiadomień może mieć maksymalnie 20 użytkowników.

Zarządzanie grupami urządzeń

Zanim wyślesz wiadomości do grupy urządzeń, musisz:

  1. Uzyskiwanie tokenów 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 jest to użytkownika) do wszystkich powiązanych tokenów rejestracji grupy. Klucze powiadomień możesz utworzyć na serwerze aplikacji.

Podstawowe zarządzanie grupami urządzeń – tworzenie i usuwanie grup oraz dodawanie i usuwanie urządzeń – odbywa się przez interfejs API HTTP w wersji 1, za pomocą tokenów krótkotrwałych autoryzować żądania wysłania. Zobacz Klucze do zarządzania grupami urządzeń, w których znajduje się lista obsługiwanych kluczy.

Zarządzanie grupami urządzeń na serwerze aplikacji

Tworzenie grupy urządzeń

Aby utworzyć grupę urządzeń, wyślij żądanie POST z nazwą dla grupy i listę tokenów rejestracji urządzeń. FCM zwraca nowe: notification_key reprezentującą grupę urządzeń.

Żądanie HTTP POST

Wyślij prośbę podobną 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. może to być nazwa użytkownika) unikalna dla danej grupy. notification_key_name i notification_key są unikalne dla grupy rejestracji tokeny. Ważne jest, aby notification_key_name był unikalne dla każdej aplikacji klienckiej, jeśli masz kilka aplikacji klienckich dla tej samej identyfikator nadawcy. Dzięki temu wiadomości będą kierowane tylko do odpowiedniej aplikacji docelowej.

Format odpowiedzi

Pomyślne żądanie zwraca notification_key polubienie następujące:

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

Zapisz właściwości notification_key oraz odpowiadające im notification_key_name do użycia w kolejnych operacjach.

Pobieram klucz powiadomień

Jeśli chcesz odzyskać istniejący klucz powiadomień, 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
{}

Przy każdym żądaniu GET dla danej nazwy klucza powiadomień serwer zwraca unikalny zakodowany ciąg. Chociaż każdy ciąg może wydawać się inny klucz, jest to w rzeczywistości prawidłowa wartość `notification_key`.

Dodawanie urządzeń do grupy i usuwanie ich z niej

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

Żądanie HTTP POST

Aby na przykład dodać atrybut 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ślna prośba o dodanie lub usunięcie urządzenia zwraca notification_key podobne do tego:

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

Klucze do zarządzania grupami urządzeń

W tabeli poniżej znajdziesz listę kluczy do tworzenia grup urządzeń oraz dodawanie i usuwanie członków.

Tabela 10. Klucze do zarządzania grupami urządzeń.

Parametr Wykorzystanie Opis
operation Wymagany, ciąg znaków Operacja do uruchomienia.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 Wymagany (oprócz operacji create, ciąg znaków) Unikalny identyfikator grupy urządzeń. Ta wartość jest zwracany w odpowiedzi na żądanie create i jest wymagane do wszystkich kolejnych operacji w grupie urządzeń.
registration_ids Wymagana 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ń

Aby wysyłać wiadomości do grup urządzeń, użyj interfejsu API HTTP w wersji 1. Jeśli obecnie wysyłania do grup urządzeń za pomocą wycofanych, starszych interfejsów API HTTP lub XMPP bądź jego starsze wersje Pakiet SDK Firebase Admin dla Node.js na podstawie starszych protokołów, zdecydowanie zalecamy migrację do interfejsu API HTTP w wersji 1 przy najbliższej okazji. Starsze interfejsy API wysyłania zostanie wyłączony i usunięty w czerwcu 2024 r.

Wysyłanie wiadomości do grupy urządzeń jest bardzo podobne do wysyłania wiadomości na pojedyncze urządzenie, w ten sam sposób autoryzować żądania wysłania. Ustaw token do klucza powiadomień grupy:

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