Ten dokument zawiera informacje na temat składni HTTP używanej do przekazywania wiadomości z serwera aplikacji do aplikacji klienckich za pomocą Firebase Cloud Messaging.
W przypadku używania starszego protokołu HTTP serwer aplikacji musi kierować wszystkie żądania HTTP do tego punktu końcowego:
https://fcm.googleapis.com/fcm/send
Dostępne parametry i opcje można podzielić na te główne kategorie:
Składnia wiadomości przesyłanych dalej
W tej sekcji znajdziesz składnię dotyczącą wysyłania wiadomości do urządzeń podrzędnych i interpretowania odpowiedzi HTTP z usługi Firebase Cloud Messaging.
wiadomości HTTP w dół strumienia (w formacie JSON);
Tabela poniżej zawiera listę celów, opcji i ładunku dla wiadomości HTTP w formacie JSON.
Parametr | Wykorzystanie | Opis | |
---|---|---|---|
Cele | |||
to |
Opcjonalny, ciąg znaków |
Ten parametr określa odbiorcę wiadomości.
Wartość może być tokenem rejestracji urządzenia, kluczem powiadomienia grupy urządzeń lub pojedynczym tematem (z przedrostkiem |
|
registration_ids | Opcjonalna tablica ciągów znaków |
Ten parametr określa odbiorcę wiadomości wielodostępnej, czyli wiadomości wysłanej do więcej niż jednego tokena rejestracji.
Wartość powinna być tablicą tokenów rejestracji, do których należy wysłać wiadomość multicast. Tablica musi zawierać co najmniej 1 i maksymalnie 1000 tokenów rejestracji. Aby wysłać wiadomość do jednego urządzenia, użyj parametru Wiadomości multicast są dozwolone tylko w formacie HTTP JSON. |
|
condition |
Opcjonalny, ciąg znaków | Ten parametr określa wyrażenie logiczne warunków, które określają docelowego odbiorcę wiadomości. Obsługiwany warunek: temat, sformatowany jako „temat w sekcji Tematy”. Wielkość liter w tej wartości nie ma znaczenia. Obsługiwane operatory: |
|
notification_key Wycofane |
Opcjonalny, ciąg znaków | Ten parametr został wycofany. Zamiast tego użyj parametru |
|
Opcje | |||
collapse_key |
Opcjonalny, ciąg znaków | Ten parametr identyfikuje grupę wiadomości (np. z Pamiętaj, że nie możemy zagwarantować kolejności wysyłania wiadomości. Uwaga: w danym momencie można użyć maksymalnie 4 różne klucze zwijania. Oznacza to, że FCM może jednocześnie przechowywać 4 różne wiadomości na aplikację klienta. Jeśli przekroczysz tę liczbę, nie ma gwarancji, które 4 klucze FCM zachowa. |
|
priority |
Opcjonalny, ciąg znaków | Określa priorytet wiadomości. Prawidłowe wartości to „normal” i „high”. Na platformach Apple odpowiadają one priorytetom APN 5 i 10. Domyślnie wiadomości z powiadomieniami są wysyłane z wysokim priorytetem, a wiadomości z danymi – z normalnym priorytetem. Priorytet normalny optymalizuje zużycie baterii przez aplikację kliencką i powinien być używany, chyba że wymagana jest natychmiastowa dostawa. W przypadku wiadomości o normalnym priorytecie aplikacja może otrzymać wiadomość z nieokreślonym opóźnieniem. Gdy wiadomość jest wysyłana z wysokim priorytetem, jest wysyłana natychmiast, a aplikacja może wyświetlić powiadomienie. |
|
content_available |
Opcjonalna, logiczna | Na platformach Apple to pole reprezentuje wartość |
|
mutable_content |
Opcjonalny, logiczny element JSON | Na platformach Apple to pole reprezentuje wartość
|
|
time_to_live |
Opcjonalnie, liczba | Ten parametr określa, jak długo (w sekundach) wiadomość powinna być przechowywana w magazynie FCM, jeśli urządzenie jest offline. Maksymalny czas w przypadku obsługiwanego okresu ważności to 4 tygodnie, a wartość domyślna to 4 tygodnie. Więcej informacji znajdziesz w artykule Ustawianie czasu trwania wiadomości. |
|
restricted_package_
(tylko Android) |
Opcjonalny, ciąg znaków | Ten parametr określa nazwę pakietu aplikacji, w której tokeny rejestracji muszą być zgodne, aby można było otrzymać wiadomość. | |
dry_run |
Opcjonalna, logiczna | Gdy ten parametr ma wartość Wartością domyślną jest |
|
Ładunek | |||
data |
Opcjonalnie, obiekt | Ten parametr określa niestandardowe pary klucz-wartość ładunku wiadomości. Na przykład Na platformach Apple, jeśli wiadomość jest wysyłana przez APN, reprezentuje ona pola danych niestandardowych. Jeśli jest wysyłany za pomocą FCM, jest reprezentowany jako słownik klucz-wartość w W przypadku Androida spowoduje to utworzenie dodatkowego parametru o nazwie Klucz nie powinien być słowem zastrzeżonym (np. „from”, „message_type” ani żadnym słowem rozpoczynającym się od „google” lub „gcm”). Nie używaj żadnych słów zdefiniowanych w tej tabeli (np. Zalecamy stosowanie wartości typu ciąg tekstowy. Musisz przekonwertować wartości w obiektach lub innych typach danych innych niż ciąg znaków (np. liczby całkowite lub wartości logiczne) na ciągi znaków. |
|
notification |
Opcjonalnie, obiekt | Ten parametr określa wstępnie zdefiniowane, widoczne dla użytkownika pary klucz-wartość w danych powiadomienia. Szczegółowe informacje znajdziesz w sekcji dotyczącej obsługi ładunku powiadomienia.
Więcej informacji o opcjach wiadomości z powiadomieniem i wiadomości danych znajdziesz w artykule
Typy wiadomości. Jeśli podano dane payload powiadomienia lub opcja content_available jest ustawiona na true w przypadku wiadomości wysyłanej na urządzenie Apple, wiadomość jest wysyłana przez APN, w przeciwnym razie jest wysyłana przez FCM.
|
Obsługa danych powiadomienia
W poniższych tabelach znajdziesz zdefiniowane wstępnie klucze, które możesz wykorzystać do tworzenia wiadomości powiadomień na iOS i Androida.
Parametr | Wykorzystanie | Opis |
---|---|---|
title |
Opcjonalny, ciąg znaków |
Tytuł powiadomienia. To pole jest niewidoczne na telefonach i tabletach. |
body |
Opcjonalny, ciąg znaków |
Treść powiadomienia. |
sound |
Opcjonalny, ciąg znaków |
Dźwięk odtwarzany, gdy urządzenie otrzyma powiadomienie.
Ciąg znaków określający pliki dźwiękowe w głównym pakiecie aplikacji klienckiej lub w folderze
|
badge |
Opcjonalny, ciąg znaków |
Wartość plakietki na ikonie aplikacji na ekranie głównym. Jeśli nie określisz tu żadnej wartości, plakietka nie ulegnie zmianie.
Jeśli ma wartość |
click_action |
Opcjonalny, ciąg znaków |
Działanie powiązane z kliknięciem powiadomienia przez użytkownika.
Odpowiada wartości |
subtitle |
Opcjonalny, ciąg znaków |
Podtytuł powiadomienia. |
body_loc_key |
Opcjonalny, ciąg znaków |
Klucz do ciągu tekstowego w zasobach ciągów tekstowych aplikacji, który służy do zlokalizowania tekstu w ramach bieżącej lokalizacji użytkownika.
Odpowiada wartości Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload i Lokalizacja treści powiadomień zdalnych. |
body_loc_args |
Opcjonalnie tablica JSON jako ciąg znaków |
Wartości zmiennych tekstowych, które mają być używane zamiast specyfikatorów formatu w elemencie
Odpowiada wartości Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload i Lokalizacja treści powiadomień zdalnych. |
title_loc_key |
Opcjonalny, ciąg znaków |
Klucz do ciągu znaków tytułu w zasobach ciągu znaków aplikacji, który służy do zlokalizowania tekstu tytułu w zależności od bieżącej lokalizacji użytkownika.
Odpowiada wartości Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload i Lokalizacja treści powiadomień zdalnych. |
title_loc_args |
Opcjonalnie tablica JSON jako ciąg znaków |
zmienne wartości ciągu znaków, które mają być używane zamiast specyfikatorów formatu w elementach
Odpowiada wartości Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload i Lokalizacja treści powiadomień zdalnych. |
Parametr | Wykorzystanie | Opis |
---|---|---|
title |
Opcjonalny, ciąg znaków |
Tytuł powiadomienia. |
body |
Opcjonalny, ciąg znaków |
Treść powiadomienia. |
android_channel_id |
Opcjonalny, ciąg znaków |
Identyfikator kanału powiadomienia (nowy w Androidzie O). Aplikacja musi utworzyć kanał z tym identyfikatorem, zanim zostanie odebrane jakiekolwiek powiadomienie z tym identyfikatorem. Jeśli nie prześlesz tego identyfikatora kanału w żądaniu lub jeśli podany identyfikator kanału nie został jeszcze utworzony przez aplikację, FCMużyje identyfikatora kanału określonego w pliku manifestu aplikacji. |
icon |
Opcjonalny, ciąg znaków |
Ikona powiadomienia.
Ustawia ikonę powiadomienia na |
sound |
Opcjonalny, ciąg znaków |
Dźwięk odtwarzany, gdy urządzenie otrzyma powiadomienie.
Obsługuje |
tag |
Opcjonalny, ciąg znaków |
Identyfikator używany do zastępowania istniejących powiadomień w panelu powiadomień. Jeśli nie zostanie określone inaczej, każda prośba powoduje utworzenie nowego powiadomienia. Jeśli jest ono określone i powiadomienie z tym samym tagiem jest już wyświetlane, nowe powiadomienie zastąpi dotychczasowe w schowku powiadomień. |
color |
Opcjonalny, ciąg znaków |
Kolor ikony powiadomienia wyrażony w formacie |
click_action |
Opcjonalny, ciąg znaków |
Działanie powiązane z kliknięciem powiadomienia przez użytkownika. Jeśli to możliwe, po kliknięciu powiadomienia uruchamiana jest aktywność z odpowiednim filtrem intencji. |
body_loc_key |
Opcjonalny, ciąg znaków |
Klucz do ciągu tekstowego w zasobach ciągów tekstowych aplikacji, który służy do zlokalizowania tekstu w ramach bieżącej lokalizacji użytkownika. Więcej informacji znajdziesz w zasobach napisów. |
body_loc_args |
Opcjonalnie tablica JSON jako ciąg znaków |
Wartości zmiennych tekstowych, które mają być używane zamiast specyfikatorów formatu w elemencie Więcej informacji znajdziesz w sekcji Formatowanie i stylowanie. |
title_loc_key |
Opcjonalny, ciąg znaków |
Klucz do ciągu znaków tytułu w zasobach ciągu znaków aplikacji, który służy do zlokalizowania tekstu tytułu w zależności od bieżącej lokalizacji użytkownika. Więcej informacji znajdziesz w zasobach napisów. |
title_loc_args |
Opcjonalnie tablica JSON jako ciąg znaków |
zmienne wartości ciągu znaków, które mają być używane zamiast specyfikatorów formatu w elementach Więcej informacji znajdziesz w sekcji Formatowanie i stylowanie. |
Parametr | Wykorzystanie | Opis |
---|---|---|
title |
Opcjonalny, ciąg znaków |
Tytuł powiadomienia. |
body |
Opcjonalny, ciąg znaków |
Treść powiadomienia. |
icon |
Opcjonalny, ciąg znaków |
Adres URL ikony powiadomienia. |
click_action |
Opcjonalny, ciąg znaków |
Działanie powiązane z kliknięciem powiadomienia przez użytkownika. W przypadku wszystkich wartości adresu URL wymagany jest protokół HTTPS. |
wiadomości HTTP z dołu (zwykły tekst);
Tabela poniżej zawiera składnię kierowania, opcji i ładunku w zwykłych wiadomościach HTTP.
Parametr | Wykorzystanie | Opis |
---|---|---|
Cele | ||
registration_id |
Wymagane, ciąg znaków | Ten parametr określa aplikacje klienta (tokeny rejestracji) otrzymujące wiadomość. Wiadomości grupowe (wysyłane do więcej niż 1 tokena rejestracji) są dozwolone tylko w formacie HTTP JSON. |
Opcje | ||
collapse_key |
Opcjonalny, ciąg znaków | Szczegółowe informacje znajdziesz w tabeli 1. |
time_to_live |
Opcjonalnie, liczba | Szczegółowe informacje znajdziesz w tabeli 1. |
restricted_package_name |
Opcjonalny, ciąg znaków | Szczegółowe informacje znajdziesz w tabeli 1. |
dry_run |
Opcjonalna, logiczna | Szczegółowe informacje znajdziesz w tabeli 1. |
Ładunek | ||
data.<key> |
Opcjonalny, ciąg znaków | Ten parametr określa pary klucz-wartość ładunku wiadomości. Nie ma limitu liczby parametrów klucz-wartość, ale łączny rozmiar wiadomości nie może przekroczyć 4096 bajtów. Na przykład na Androidzie Klucz nie powinien być słowem zastrzeżonym (np. „from”, „message_type” ani żadnym słowem rozpoczynającym się od „google” lub „gcm”). Nie używaj żadnych słów zdefiniowanych w tej tabeli (np. |
Interpretowanie odpowiedzi na wiadomość z dalszych etapów
Serwer aplikacji powinien zinterpretować nagłówek i treść odpowiedzi na wiadomość, aby zinterpretować odpowiedź na wiadomość wysłaną z FCM. W tabeli poniżej znajdziesz możliwe odpowiedzi.
Odpowiedź | Opis |
---|---|
200 | Wiadomość została przetworzona. Treść odpowiedzi będzie zawierać więcej informacji o stanie wiadomości, ale jej format będzie zależał od tego, czy żądanie było w formacie JSON, czy zwykłym tekście. Więcej informacji znajdziesz w tabeli 5. |
400 | Dotyczy to tylko zapytań w formacie JSON. Wskazuje, że żądanie nie zostało przeanalizowane jako plik JSON lub zawiera nieprawidłowe pola (np. ciąg znaków zamiast liczby). Dokładny powód błędu jest opisany w odpowiedzi. Należy rozwiązać problem, zanim żądanie zostanie ponownie wysłane. |
401 | Podczas uwierzytelniania konta nadawcy wystąpił błąd. |
5xx | Błędy z zakresu 500–599 (np. 500 lub 503) wskazują, że podczas próby przetworzenia żądania wystąpił wewnętrzny błąd w backendzie FCM lub że serwer jest tymczasowo niedostępny (np. z powodu przekroczenia limitu czasu). Nadawca musi spróbować ponownie później, uwzględniając nagłówek Retry-After zawarty w odpowiedzi. Serwery aplikacji muszą stosować strategię wzrastającego czasu do ponowienia. |
W tabeli poniżej wymieniono pola w treści odpowiedzi na dalsze wiadomości (w formacie JSON).
Parametr | Wykorzystanie | Opis |
---|---|---|
multicast_id |
Wymagane, liczba | Unikalny identyfikator (numer) identyfikujący wiadomość multicast. |
success |
Wymagane, liczba | Liczba wiadomości, które zostały przetworzone bez błędów. |
failure |
Wymagane, liczba | Liczba wiadomości, których nie udało się przetworzyć. |
results |
Wymagane, tablica obiektów | Tablica obiektów reprezentujących stan przetworzonych wiadomości. Obiekty są wymienione w tej samej kolejności co żądanie (czyli dla każdego identyfikatora żądania w żądaniu wynik jest wymieniony pod tym samym indeksem w odpowiedzi).
|
Parametr | Wykorzystanie | Opis |
---|---|---|
message_id |
Opcjonalnie, liczba | Identyfikator wiadomości dotyczącej tematu, gdy FCM otrzymała prośbę i próbuje przekazać ją do wszystkich subskrybowanych urządzeń. |
error |
Opcjonalny, ciąg znaków | Błąd, który wystąpił podczas przetwarzania wiadomości. Możliwe wartości znajdziesz w tabeli 9. |
Parametr | Wykorzystanie | Opis |
---|---|---|
id |
Wymagane, ciąg znaków | Ten parametr określa unikalny identyfikator wiadomości FCM, który został pomyślnie przetworzony. |
registration_id |
Opcjonalny, ciąg znaków | Ten parametr określa token rejestracji aplikacji klienckiej, do której wysłano i przetworzono wiadomość. |
Parametr | Wykorzystanie | Opis |
---|---|---|
Error |
Wymagane, ciąg znaków | Ten parametr określa wartość błędu podczas przetwarzania wiadomości dla odbiorcy. Szczegółowe informacje znajdziesz w tabeli 9. |
Kody odpowiedzi na błędy wiadomości przesyłanych dalej
Tabela poniżej zawiera kody odpowiedzi błędów w przypadku wiadomości przesyłanych dalej.
Błąd | Kod HTTP | Zalecane działanie |
---|---|---|
Brak tokena rejestracji | 200 + błąd:brak rejestracji | Sprawdź, czy żądanie zawiera token rejestracji (w polu registration_id w wiadomości tekstowej lub w polu to lub registration_ids w formacie JSON). |
Nieprawidłowy token rejestracji | 200 + błąd:nieprawidłowa rejestracja | Sprawdź format tokena rejestracji przekazywanego na serwer. Upewnij się, że token rejestracji jest zgodny z tokenem rejestracji, który aplikacja kliencka otrzymuje podczas rejestracji w Firebase Notifications. Nie skracaj ani nie dodawaj dodatkowych znaków. |
Niezarejestrowane urządzenie | 200 + błąd:NotRegistered | Dotychczasowy token rejestracji może przestać być ważny w kilku sytuacjach, między innymi:
|
Nieprawidłowa nazwa pakietu | 200 + błąd:InvalidPackageName | Upewnij się, że wiadomość została wysłana do tokena rejestracji, którego nazwa pakietu jest zgodna z wartością przekazaną w żądaniu. |
Błąd uwierzytelniania | 401 | Nie udało się uwierzytelnić konta nadawcy, z którego wysłano wiadomość. Możliwe przyczyny:
|
Niezgodny nadawca | 200 + błąd:MismatchSenderId | Token rejestracji jest powiązany z określoną grupą nadawców. Gdy aplikacja kliencka rejestruje się w usłudze FCM, musi określić, którzy nadawcy mogą wysyłać wiadomości. Podczas wysyłania wiadomości do aplikacji klienta należy użyć jednego z tych identyfikatorów nadawcy. Jeśli przełączysz się na innego nadawcę, istniejące tokeny rejestracji nie będą działać. |
Nieprawidłowy plik JSON | 400 | Sprawdź, czy wiadomość JSON jest prawidłowo sformatowana i zawiera prawidłowe pola (np. czy przekazano prawidłowy typ danych). |
Nieprawidłowe parametry | 400 + błąd:InvalidParameters | Sprawdź, czy podane parametry mają prawidłową nazwę i typ. |
Wiadomość jest za duża | 200 + błąd:MessageTooBig | Sprawdź, czy łączny rozmiar danych w ładunku wiadomości nie przekracza limitów FCM: 4096 bajtów w przypadku większości wiadomości lub 2048 bajtów w przypadku wiadomości do tematów. Dotyczy to zarówno kluczy, jak i wartości. |
Nieprawidłowy klucz danych | Błąd 200 +:
InvalidDataKey |
Sprawdź, czy dane ładunku nie zawierają klucza (np. from , gcm lub dowolnej wartości z preiksem google ), który jest używany wewnętrznie przez FCM. Pamiętaj, że niektóre słowa (np. collapse_key ) są też używane przez FCM, ale są dozwolone w pliku danych. W takim przypadku wartość pliku danych zostanie zastąpiona wartością FCM. |
Nieprawidłowy czas życia | 200 + błąd:InvalidTtl | Sprawdź, czy wartość użyta w parametrye time_to_live jest liczbą całkowitą reprezentującą czas trwania w sekundach z zakresu od 0 do 2 419 200 (4 tygodnie). |
Czas oczekiwania | Błąd 5xx lub 200 i nowsze:niedostępny | Serwer nie mógł przetworzyć żądania w czasie. Ponownie wyślij to samo żądanie, ale musisz:
Nadawcy, którzy powodują problemy, mogą zostać umieszczeni na liście zablokowanych. |
Wewnętrzny błąd serwera | 500 lub 200 + błąd:Wewnętrzny błąd serwera | Podczas próby przetworzenia żądania serwer napotkał błąd. Możesz ponownie przesłać tę samą prośbę, przestrzegając wymagań podanych w sekcji „Limit czasu” (patrz wiersz powyżej). Jeśli błąd będzie się powtarzał, skontaktuj się z zespołem pomocy Firebase. |
Przekroczono częstotliwość wysyłania wiadomości z urządzenia | Błąd 200 i nowsze:
DeviceMessageRate Exceeded |
Liczba wiadomości wysyłanych na konkretne urządzenie jest zbyt wysoka. Jeśli aplikacja Apple wysyła wiadomości z częstotliwością przekraczającą limity APN, może wyświetlić ten komunikat o błędzie Zmniejsz liczbę wiadomości wysyłanych na to urządzenie i użyj wykładniczego opóźnienia, aby spróbować ponownie wysłać wiadomość. |
Przekroczony limit częstotliwości wysyłania wiadomości o tematach | Błąd 200 +:
TopicsMessageRate Exceeded |
Liczba wiadomości wysyłanych do subskrybentów danego tematu jest zbyt duża. Zmniejsz liczbę wiadomości wysyłanych w danym temacie i użyj wzrastającego czasu do ponownej próby, aby ponownie spróbować wysłać wiadomość. |
Nieprawidłowe dane logowania do APNs | Błąd 200 i wyższy:
InvalidApnsCredential |
Nie udało się wysłać wiadomości kierowanej na urządzenie Apple, ponieważ wymagany klucz uwierzytelniania APNs nie został przesłany lub wygasł. Sprawdź poprawność danych logowania do wersji rozwojowej i produkcyjnej. |
Zarządzanie grupami urządzeń
W tabeli poniżej znajdziesz klucze do tworzenia grup urządzeń oraz dodawania i usuwania z nich członków. Więcej informacji znajdziesz w przewodniku dla danej platformy: iOS+ lub Android.
Parametr | Wykorzystanie | Opis |
---|---|---|
operation |
Wymagane, ciąg znaków | Operacja do wykonania.Prawidłowe wartości to create , add i remove . |
notification_key_name |
Wymagane, ciąg znaków | Zdefiniowana przez użytkownika nazwa grupy urządzeń do utworzenia lub zmodyfikowania. |
notification_key |
Wymagany (z wyjątkiem operacji create , ciągu znaków |
Unikalny identyfikator grupy urządzeń. Ta wartość jest zwracana w odpowiedzi na operację create , która się powiodła, i jest wymagana do wszystkich kolejnych operacji na grupie urządzeń. |
registration_ids |
Wymagane, tablica ciągów znaków | tokeny urządzeń do dodania lub usunięcia. Jeśli usuniesz wszystkie istniejące tokeny rejestracji z grupy urządzeń, FCM usunie tę grupę. |