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 należą do następujące ogólne kategorie:
- Składnia wiadomości w dalszej części
- Kody odpowiedzi na błędy w komunikatach wyświetlanych w dalszej części wiadomości
Składnia kolejnych komunikatów
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.
Dodatkowe komunikaty HTTP (JSON)
W tabeli poniżej znajdziesz cele, opcje i ładunek dla wiadomości HTTP JSON.
Parametr | Wykorzystanie | Opis | |
---|---|---|---|
Cele | |||
to |
Opcjonalny, ciąg znaków |
Ten parametr określa adresata wiadomości.
Wartość może być tokenem rejestracji urządzenia, kluczem powiadomienia grupy urządzeń lub pojedynczym tematem (z przedrostkiem |
|
registration_ids | Opcjonalny, 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 Komunikaty 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ślić cel wiadomości. Obsługiwany warunek: temat w formacie „TwójTemat” w tematach”. Wielkość liter w tej wartości nie ma znaczenia. Obsługiwane operatory: |
|
notification_key Wycofano |
Opcjonalny, ciąg znaków | Ten parametr został wycofany. Zamiast tego użyj |
|
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 dozwolone są maksymalnie 4 różne klucze zwijania. Oznacza to, że FCM może jednocześnie przechowywać 4 różne wiadomości na aplikację kliencką. Jeśli przekracza tę liczbę, nie ma gwarancji, które 4 klucze zwijania (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ą priorytetom 5 i 10 APNs. Domyślnie powiadomienia są wysyłane z wysokim priorytetem oraz wiadomościami zawierającymi dane. wysyłane z normalnym priorytetem. Normalny priorytet optymalizuje zużycia baterii i należy go używać, chyba że wymagane jest natychmiastowe 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 |
Opcjonalne, wartość logiczna | Na platformach Apple użyj tego pola do reprezentowania tego pola w polu |
|
mutable_content |
Opcjonalny, logiczny typ danych JSON | Na platformach Apple użyj tego pola, aby określić,
|
|
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 okresu ważności 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 | Po ustawieniu tego parametru na Wartością domyślną jest |
|
Ładunek | |||
data |
Opcjonalny, obiekt | Ten parametr określa niestandardowe pary klucz-wartość ładunku wiadomości. Na przykład Na platformach Apple wiadomość jest wysyłana przez APN, czyli reprezentuje niestandardowe pola danych. Jeśli jest wysyłany za pomocą FCM, jest reprezentowany jako słownik klucz-wartość w W przypadku Androida spowoduje to dodatkową intencję o nazwie Klucz nie powinien być słowem zastrzeżonym („from”, „message_type” lub dowolnym 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 niebędących ciągami znaków (np. liczby całkowite lub logiczne) na ciąg znaków. |
|
notification |
Opcjonalny, obiekt | Ten parametr określa wstępnie zdefiniowane, widoczne dla użytkowników pary klucz-wartość:
ładunek powiadomień. 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 został podany ładunek powiadomień lub
Opcja content_available ma wartość true w przypadku wiadomości do Apple
na urządzeniu, wiadomość jest wysyłana za pośrednictwem punktów APN, w przeciwnym razie jest wysyłana przez
FCM.
|
Obsługa ładunku powiadomień
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 do odtwarzania, gdy urządzenie otrzyma powiadomienie.
Ciąg znaków określający pliki dźwiękowe w głównym pakiecie aplikacji klienckiej lub w pliku
Folder |
badge |
Opcjonalny, ciąg znaków |
Wartość plakietki na ikonie aplikacji na ekranie głównym. Jeśli nie określisz żadnej wartości, plakietka nie ulegnie zmianie.
Jeśli ma wartość |
click_action |
Opcjonalny, ciąg znaków |
Działanie powiązane z użytkownikiem kliknie powiadomienie.
Odpowiada |
subtitle |
Opcjonalny, ciąg znaków |
Podtytuł powiadomienia. |
body_loc_key |
Opcjonalnie: ciąg znaków |
Klucz do ciągu treści w zasobach ciągu tekstowego aplikacji, który ma być używany do zlokalizuj tekst główny do bieżącej lokalizacji użytkownika.
Odpowiada Zobacz Dokumentacja klucza ładunku Lokalizuję zawartość powiadomień zdalnych, aby dowiedzieć się więcej i informacjami o nich. |
body_loc_args |
Opcjonalnie, tablica JSON jako ciąg znaków |
Ciągi znaków zmiennych, które mają być używane zamiast specyfikatorów formatu w
Odpowiada parametrowi 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 bieżącej lokalizacji użytkownika.
Odpowiada wartości Zobacz Dokumentacja klucza ładunku Lokalizuję zawartość powiadomień zdalnych, aby dowiedzieć się więcej i informacjami o nich. |
title_loc_args |
Opcjonalnie tablica JSON jako ciąg znaków |
Ciągi znaków zmiennych, które mają być używane zamiast specyfikatorów formatu w
Odpowiada parametrowi Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload i Tłumaczenie treści powiadomień zdalnych. |
Parametr | Wykorzystanie | Opis |
---|---|---|
title |
Opcjonalny, ciąg znaków |
Tytuł powiadomienia. |
body |
Opcjonalnie: 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 powiadomienie z tym identyfikatorem zostanie odebrane. 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 |
Opcjonalnie: ciąg znaków |
Ikona powiadomienia.
Ustawia ikonę powiadomień 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 obecnych powiadomień w powiadomieniu szuflady. Jeśli nie zostanie określone inaczej, każda prośba powoduje utworzenie nowego powiadomienia. Jeśli został określony, a powiadomienie z tym samym tagiem jest już wysyłane nowe powiadomienie zastąpi dotychczasowe panelu powiadomień. |
color |
Opcjonalny, ciąg znaków |
Kolor ikony powiadomienia wyrażony w formacie |
click_action |
Opcjonalnie: ciąg znaków |
Działanie powiązane z kliknięciem powiadomienia przez użytkownika. Jeśli określisz działanie z pasującym filtrem intencji, zostanie ono uruchomione, gdy użytkownik klika je. |
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 |
Ciągi znaków zmiennych, które mają być używane zamiast specyfikatorów formatu w
Więcej informacji znajdziesz w sekcji Formatowanie i stylowanie. |
title_loc_key |
Opcjonalny, ciąg znaków |
Klucz do ciągu tytułu w zasobach ciągu tekstowego aplikacji, który ma służyć do przetłumaczyć tekst tytułu do 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 Więcej informacji znajdziesz w sekcji Formatowanie i stylowanie. |
Parametr | Wykorzystanie | Opis |
---|---|---|
title |
Opcjonalny, ciąg znaków |
Tytuł powiadomienia. |
body |
Opcjonalnie: 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 użytkownikiem kliknie powiadomienie. W przypadku wszystkich wartości adresu URL wymagany jest protokół HTTPS. |
wiadomości HTTP w kierunku zewnątrz (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 klienckie (tokeny rejestracji) otrzymujące wiadomość. Przesyłanie zbiorcze (na więcej niż 1 token rejestracji) jest dozwolone tylko przy użyciu formatu JSON HTTP. |
Opcje | ||
collapse_key |
Opcjonalnie: 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> |
Opcjonalnie: ciąg znaków | Ten parametr określa pary klucz-wartość ładunku wiadomości. Nie ma limitu liczby parametrów klucz-wartość, ale obowiązuje limit 4096 bajtów. Na przykład w Androidzie wartość Klucz nie powinien być słowem zastrzeżonym („from”, „message_type” lub dowolnym słowem rozpoczynającym się od „google” lub „gcm”). Nie używaj żadnych słów z tabeli (np. |
Interpretowanie odpowiedzi wiadomości na dalszym etapie
Serwer aplikacji powinien ocenić zarówno nagłówek odpowiedzi, jak i treść wiadomości aby zinterpretować odpowiedź na wiadomość wysłaną z adresu 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 w zwykłym tekście. Więcej informacji znajdziesz w tabeli 5. |
400 | Dotyczy tylko żądań JSON. Wskazuje, że nie udało się przeanalizować żądania jako pliku JSON lub zawierało ono nieprawidłowe dane (np. przez przekazanie ciągu znaków, gdzie oczekiwano 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 został
podczas próby przetworzenia żądania wystąpił błąd wewnętrzny w backendzie FCM;
serwer jest tymczasowo niedostępny (np. z powodu przekroczenia limitu czasu oczekiwania). Nadawca
musi spróbować ponownie później, uwzględniając wszystkie nagłówki Retry-After zawarte w parametrze
. Serwery aplikacji muszą implementować wykładniczy czas ponowienia. |
Tabela poniżej zawiera listę pól w treści odpowiedzi wiadomości podrzędnej (JSON).
Parametr | Wykorzystanie | Opis |
---|---|---|
multicast_id |
Wymagany, liczba | Unikalny identyfikator (numer) identyfikujący wiadomość multicast. |
success |
Wymagany, liczba | Liczba wiadomości, które zostały przetworzone bez błędów. |
failure |
Wymagany, liczba | Liczba wiadomości, których nie udało się przetworzyć. |
results |
Wymagana 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 rejestracji w żądaniu jego 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 będzie próbować dostarczyć ją do wszystkich subskrybowanych urządzeń. |
error |
Opcjonalnie: ciąg znaków | Podczas przetwarzania wiadomości wystąpił błąd. 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 w kolejnych komunikatach
Tabela poniżej zawiera kody odpowiedzi na błędy w kolejnych komunikatach.
Błąd | Kod HTTP | Zalecane działanie |
---|---|---|
Brak tokena rejestracji | Błąd 200 i brak rejestracji | Sprawdź, czy żądanie zawiera token rejestracji (w polu registration_id w wiadomości tekstowej lub w polu to bądź registration_ids w formacie JSON). |
Nieprawidłowy token rejestracji | 200 + błąd:nieprawidłowa rejestracja | Sprawdź format tokena rejestracji, który przekazujesz do serwera. Upewnij się, że token rejestracji jest zgodny z tokenem rejestracji, który aplikacja kliencka otrzymuje podczas rejestracji w Firebase Notifications. Nie skracaj ich ani nie dodawaj dodatkowych znaków. |
Niezarejestrowane urządzenie | 200 + błąd: NotRegistered | Istniejący token rejestracji może stracić ważność w wielu sytuacjach, między innymi w tych przypadkach:
|
Nieprawidłowa nazwa pakietu | 200 + błąd:InvalidPackageName | Upewnij się, że wiadomość była zaadresowana na token rejestracji, którego nazwa pakietu pasuje do wartości przekazywanej w żądaniu. |
Błąd uwierzytelniania | 401 | Nie udało się uwierzytelnić konta nadawcy użytego do wysłania wiadomości. Możliwe przyczyny:
|
Niezgodny nadawca | 200 i błąd:MismatchSenderId | Token rejestracji jest powiązany z określoną grupą nadawców. Gdy aplikacja kliencka się rejestruje w przypadku FCM, musi określać, którzy nadawcy mogą wysyłać wiadomości. Należy użyć jednej tych identyfikatorów nadawców podczas wysyłania wiadomości do aplikacji klienckiej. Jeśli przełączysz się na inny 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. sprawdzając, czy przekazano odpowiedni 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ą również używane przez funkcję FCM, ale są dozwolone w ładunku, gdzie
Gdy wartość ładunku zostanie zastąpiona wartością FCM. |
Nieprawidłowy czas życia | 200 + błąd:InvalidTtl | Sprawdź, czy wartość użyta w funkcji time_to_live jest liczbą całkowitą reprezentującą
czas trwania w sekundach z zakresu 0–2 419 200 (4 tygodnie). |
Czas oczekiwania | 5xx lub 200 + błąd:niedostępne | Serwer nie mógł przetworzyć żądania na czas. 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 spróbować jeszcze raz to samo żądanie zgodnie z wymaganiami wymienionymi w sekcji „Limit czasu” (zobacz wiersz powyżej). Jeśli błąd będzie się powtarzał, skontaktuj się z zespołem pomocy Firebase. |
Przekroczono częstotliwość 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 APNs, może zobaczyć ten komunikat o błędzie Zmniejsz liczbę wiadomości wysyłanych na to urządzenie i użyj wykładniczego zmniejszania częstotliwości wysyłania, aby spróbować ponownie. |
Przekroczony limit częstotliwości wysyłania wiadomości o tematach | Błąd 200 +:
TopicsMessageRate Exceeded |
Częstotliwość wiadomości do subskrybentów określonego 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 APNs | 200 i błąd:
Nieprawidłowe dane logowania API |
Nie udało się wysłać wiadomości kierowanej na urządzenie Apple, ponieważ wymagane punkty APN nie przesłano klucza uwierzytelniania lub wygasł. Sprawdź poprawność danych logowania do wersji rozwojowej i produkcyjnej. |
Zarządzanie grupami urządzeń
W tabeli poniżej znajdziesz listę kluczy do tworzenia grup urządzeń oraz dodawanie i usuwanie członków. Więcej informacji: dla swojej platformy, iOS+ lub na urządzeniu z Androidem.
Parametr | Wykorzystanie | Opis |
---|---|---|
operation |
Wymagane, ciąg znaków | Operacja do uruchomienia.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 (oprócz operacji create , ciąg 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ę. |