Protokół HTTP Firebase Cloud Messaging

.

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.

Tabela 1. Docelowe, opcje i ładunek dla kolejnych komunikatów 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 /topics/). Aby wysyłać do wielu tematów, użyj parametru /topics/.condition

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 to.

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: &&||. Obsługiwane są maksymalnie 2 operatory na wiadomość związaną z tematem.

notification_key
Wycofane
Opcjonalny, ciąg znaków

Ten parametr został wycofany. Zamiast tego użyj parametru to, aby określić odbiorców wiadomości. Więcej informacji o wysyłaniu wiadomości na wiele urządzeń znajdziesz w dokumentacji dotyczącej Twojej platformy.

Opcje
collapse_key Opcjonalny, ciąg znaków

Ten parametr identyfikuje grupę wiadomości (np. z collapse_key: "Updates Available"), które można złożyć, aby po wznowieniu wysyłania wysyłana była tylko ostatnia wiadomość. Ma to na celu uniknięcie wysyłania zbyt wielu takich samych wiadomości, gdy urządzenie znów połączy się z internetem lub stanie się aktywne.

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ść content-available w pliku danych APNs. Gdy wysyłasz powiadomienie lub wiadomość, a ta opcja jest ustawiona na true, nieaktywna aplikacja klienta zostanie uruchomiona, a wiadomość zostanie wysłana przez APN jako powiadomienie bezdźwiękowe, a nie przez FCM. Pamiętaj, że nie można zagwarantować dostarczenia powiadomień bezdźwiękowych w usługach APN. Ich dostarczenie może zależeć od czynników takich jak włączenie przez użytkownika trybu niskiego poboru mocy czy przymusowe zamknięcie aplikacji. Na Androidzie wiadomości danych domyślnie budzą aplikację. W Chrome nie jest to obecnie obsługiwane.

mutable_content Opcjonalny, logiczny element JSON

Na platformach Apple to pole reprezentuje wartość mutable-content w danych APNs. Jeśli po wysłaniu powiadomienia to ustawienie jest ustawione na true, zawartość powiadomienia można zmodyfikować przed jego wyświetleniem, używając rozszerzenia aplikacji Usługa powiadomień. Ten parametr będzie ignorowany na urządzeniach z Androidem i w internecie.

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_
name
(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ść true, deweloperzy mogą testować żądanie bez wysyłania wiadomości.

Wartością domyślną jest false.

Ładunek
data Opcjonalnie, obiekt

Ten parametr określa niestandardowe pary klucz-wartość ładunku wiadomości.

Na przykład data:{"score":"3x1"}:

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 AppDelegate application:didReceiveRemoteNotification:.

W przypadku Androida spowoduje to utworzenie dodatkowego parametru o nazwie score z wartością ciągu znaków 3x1.

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. collapse_key).

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.

Tabela 2a. iOS – klucze do wiadomości powiadomień

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 Library/Sounds w kontenerze danych aplikacji. Więcej informacji znajdziesz w  Bibliotece dla deweloperów iOS.

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ść 0, plakietka zostaje usunięta.

click_action Opcjonalny, ciąg znaków

Działanie powiązane z kliknięciem powiadomienia przez użytkownika.

Odpowiada wartości category w pliku danych APN.

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 loc-key w pliku danych APN.

Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload 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 body_loc_key do lokalizacji tekstu w treści zgodnie z bieżącą lokalizacją użytkownika.

Odpowiada wartości loc-args w pliku danych APN.

Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload 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 title-loc-key w pliku danych APN.

Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload 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 title_loc_key w celu zlokalizowania tekstu tytułu zgodnie z bieżącą lokalizacją użytkownika.

Odpowiada wartości title-loc-args w pliku danych APN.

Więcej informacji znajdziesz w artykule Referencje dotyczące klucza danych payload Lokalizacja treści powiadomień zdalnych.

Tabela 2b Android – klucze do wiadomości powiadomień

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 myicon dla zasobu rysowanego myicon. Jeśli nie prześlesz tego klucza w żądaniu, FCM wyświetli ikonę programu uruchamiającego określoną w pliku manifestu aplikacji.

sound Opcjonalny, ciąg znaków

Dźwięk odtwarzany, gdy urządzenie otrzyma powiadomienie.

Obsługuje "default" lub nazwę pliku zasobu dźwiękowego dołączonego do aplikacji. Pliki dźwiękowe muszą znajdować się w folderze /res/raw/.

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 #rrggbb.

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 body_loc_key do lokalizacji tekstu w treści zgodnie z bieżącą lokalizacją użytkownika.

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 title_loc_key w celu zlokalizowania tekstu tytułu zgodnie z bieżącą lokalizacją użytkownika.

Więcej informacji znajdziesz w sekcji Formatowanie i stylowanie.

Tabela 2c Internet (JavaScript) – klucze do wiadomości powiadomień

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.

Tabela 3. Docelowe adresy, opcje i ładunek dla kolejnych wiadomości HTTP w postaci zwykłego tekstu.

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 "data.score"."3x1" spowoduje utworzenie dodatkowego parametru intencji o nazwie score z wartością ciągu znaków 3x1.

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. collapse_key).

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.

Tabela 4. Nagłówek odpowiedzi wiadomości HTTP na dalszym etapie przesyłania.

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).

Tabela 5. Treść odpowiedzi na wiadomość HTTP (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).
  • message_id: ciąg znaków określający unikalny identyfikator każdej przetworzonej wiadomości.
  • error: ciąg znaków określający błąd, który wystąpił podczas przetwarzania wiadomości dla odbiorcy. Możliwe wartości znajdziesz w tabeli 9.

Tabela 6. Treść odpowiedzi HTTP dotyczącej wiadomości o temacie (format JSON).

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.

Tabela 7. Odpowiedź o powodzeniu dla treści odpowiedzi wiadomości HTTP (zwykły tekst) przekazywanej dalej.

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ść.

Tabela 8 Odpowiedź na błąd w treści odpowiedzi na żądanie HTTP (zwykły tekst).

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.

Tabela 9 Kody odpowiedzi na błędy 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:
  • Jeśli aplikacja kliencka wyrejestruje się z FCM.
  • Jeśli aplikacja kliencka zostanie automatycznie wyrejestrowana, co może się zdarzyć, gdy użytkownik odinstaluje aplikację. Na przykład w iOS, jeśli usługa informacji zwrotnych APNs zgłosiła, że token APNs jest nieprawidłowy.
  • token rejestracji wygaśnie (np. Google może zdecydować się na odświeżenie tokenów rejestracji lub token APN wygaśnie na urządzeniach z iOS);
  • Jeśli aplikacja klienta została zaktualizowana, ale nowa wersja nie jest skonfigurowana do odbierania wiadomości.
W takich przypadkach usuń ten token rejestracji z serwera aplikacji i przestań go używać do wysyłania wiadomości.
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:
  • Brak nagłówka autoryzacji lub nieprawidłowa składnia w żądaniu HTTP.
  • Projekt Firebase, do którego należy określony klucz serwera, jest nieprawidłowy.
  • Tylko starsze klucze serwera – żądanie pochodzi z serwera, który nie został dodany do białej listy adresów IP klucza serwera.
Sprawdź, czy token wysyłany w nagłówku uwierzytelniania to właściwy klucz serwera powiązany z Twoim projektem. Więcej informacji znajdziesz w sekcji Sprawdzanie ważności klucza serwera . Jeśli używasz starszego klucza serwera, zalecamy przejście na nowy klucz, który nie ma ograniczeń dotyczących adresów IP. Zobacz Migratowanie starszych kluczy serwera.
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:

  • Uwzględnij nagłówek Retry-After, jeśli jest on zawarty w odpowiedzi serwera połączenia FCM.
  • W mechanizmie ponownych prób zastosuj wzrastający czas do ponownej próby. (np.jeśli przed pierwszą próbą czekasz 1 sekundę, przed kolejną poczekaj co najmniej 2 sekundy, a przed kolejną – 4 sekundy itd.). Jeśli wysyłasz wiele wiadomości, opóźnij każdą z nich niezależnie o dodatkową losową wartość, aby uniknąć wysyłania nowej prośby o przesłanie wszystkich wiadomości w tym samym czasie.

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.

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

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ę.