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 tematycznych, ale obejmuje uwierzytelnianie, dzięki któremu członkostwo w grupie jest zarządzane tylko przez Twoje serwery. Jeśli na przykład chcesz wysyłać różne wiadomości na różne modele telefonów, Twoje serwery mogą dodawać lub usuwać rejestracje do odpowiednich grup i wysyłać odpowiednie wiadomości do poszczególnych grup. Przesyłanie wiadomości dotyczących grup urządzeń różni się od wiadomości tematycznych tym, że obejmuje zarządzanie grupami urządzeń na serwerach, 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. 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ń, mapując konkretną grupę (zwykle użytkownika) na wszystkie powiązane z nią tokeny rejestracji. 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 z wykorzystaniem krótkotrwałych tokenów do autoryzowania żądań wysyłania. Listę obsługiwanych kluczy znajdziesz w sekcji Klucze do 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 z nazwą grupy i listą tokenów rejestracji urządzeń. FCM zwraca nowy identyfikator notification_key reprezentujący grupę urządzeń.

Żądanie HTTP POST

Wyślij prośbę podobną do tej 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 dla danej grupy. notification_key_name i notification_key są unikalne dla grupy tokenów rejestracji. Jeśli masz wiele aplikacji klienckich z tym samym identyfikatorem nadawcy, identyfikator notification_key_name musi być unikalny dla każdej aplikacji klienckiej. Dzięki temu wiadomości będą kierowane tylko do odpowiedniej aplikacji docelowej.

Format odpowiedzi

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

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

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

Pobieram klucz powiadomień

Jeśli chcesz pobrać istniejący klucz powiadomień, użyj w żądaniu GET polecenia notification_key_name, 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 dla określonej nazwy klucza powiadomień 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ść parametru „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 żądanie 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ć do organizacji appUser-Chris urządzenie z tokenem rejestracji bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..., trzeba było 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 podobny do tego:

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

Klucze do zarządzania grupami urządzeń

W tabeli poniżej znajdziesz klucze do tworzenia grup urządzeń oraz dodawania i usuwania użytkownikó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 zwracana w odpowiedzi dla udanej operacji create i jest wymagana przy wszystkich kolejnych operacjach na 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 wysyłasz obecnie wiadomości do grup urządzeń za pomocą wycofanych starszych wersji interfejsów API wysyłania do HTTP lub XMPP albo dowolnych starszych wersji pakietu SDK Firebase Admin dla Node.js opartego na starszych protokołach, zdecydowanie zalecamy jak najszybsze przejście na interfejs HTTP v1 API. Starsze interfejsy API do wysyłania zostaną wyłączone i usunięte w czerwcu 2024 r.

Wysyłanie wiadomości do grupy urządzeń jest bardzo podobne do wysyłania wiadomości na pojedyncze urządzenie – przy użyciu tej samej metody autoryzowania żądań wysłania. W polu token ustaw klucz 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