Na tej stronie znajdziesz pomoc w rozwiązywaniu problemów i odpowiedzi na najczęstsze pytania dotyczące Cloud Messaging.
Czym różni się Kreator powiadomień od FCM?
Firebase Cloud Messaging zapewnia pełny zestaw funkcji przesyłania wiadomości za pomocą pakietów SDK klienta i protokołu serwera HTTP. W przypadku wdrożeń o bardziej złożonych wymaganiach dotyczących przesyłania wiadomości FCM jest właściwym wyborem.
Kreator powiadomień to lekkie, bezserwerowe rozwiązanie do obsługi wiadomości oparte na Firebase Cloud Messaging. Dzięki łatwej w użyciu konsoli graficznej i mniejszym wymaganiom dotyczącym kodowania Kreator powiadomień umożliwia użytkownikom wysyłanie wiadomości, które pomagają ponownie zaangażować i utrzymać użytkowników, wspierają rozwój dzięki kampaniom promującym aplikacje i kampanie marketingowe.
| Uprawnienia | Kreator powiadomień | Cloud Messaging | |
|---|---|---|---|
| Target | Konkretne urządzenie | ||
| Klienci subskrybujący tematy (np. pogoda) | |||
| Klienci w zdefiniowanym segmencie użytkowników (aplikacja, wersja, język) | |||
| klienci w określonych grupach odbiorców usługi Analytics, | |||
| Klienci w grupach urządzeń | |||
| Ruch wychodzący od klienta do serwera | |||
| Typ wiadomości | Powiadomienia do 2 KB | ||
| Wiadomości z danymi o rozmiarze do 4 KB | |||
| Dostawa | Natychmiast | ||
| Przyszły czas lokalny urządzenia klienta | |||
| Statystyki | Wbudowana funkcja gromadzenia danych analitycznych dotyczących powiadomień oraz analiza ścieżki |
Czy muszę korzystać z innych usług Firebase, aby używać FCM?
Możesz używać Firebase Cloud Messaging jako samodzielnego komponentu, bez korzystania z innych usług Firebase.
Dlaczego urządzenia docelowe najwyraźniej nie otrzymują wiadomości?
Jeśli wygląda na to, że urządzenia nie otrzymały wiadomości, najpierw sprawdź te 2 potencjalne przyczyny:
Obsługa wiadomości na pierwszym planie w przypadku powiadomień. Aplikacje klienckie muszą dodawać logikę obsługi wiadomości, aby obsługiwać wiadomości z powiadomieniem, gdy aplikacja działa na urządzeniu na pierwszym planie. Szczegółowe informacje znajdziesz w dokumentacji dotyczącej iOS i Androida.
Ograniczenia zapory sieciowej. Jeśli Twoja organizacja ma zaporę sieciową, która ogranicza ruch do lub z internetu, musisz ją skonfigurować tak, aby zezwalała na połączenia z FCM, aby aplikacje klienckie Firebase Cloud Messaging mogły odbierać wiadomości. Porty, które należy otworzyć:
- 5228
- 5229
- 5230
FCM zwykle używa portu 5228, ale czasami korzysta z portów 5229 i 5230. FCM nie podaje konkretnych adresów IP, więc musisz zezwolić zaporze sieciowej na akceptowanie połączeń wychodzących w przypadku wszystkich adresów IP zawartych w blokach adresów IP wymienionych na liście Google ASN 15169.
Dlaczego metoda onMessageReceived nie jest wywoływana w mojej aplikacji na Androida?
Gdy aplikacja działa w tle, wiadomości z powiadomieniem są wyświetlane w obszarze powiadomień, a metoda onMessageReceived nie jest wywoływana. W przypadku powiadomień z ładunkiem danych powiadomienie jest wyświetlane w obszarze powiadomień, a dane dołączone do powiadomienia można pobrać z intencji uruchomionej, gdy użytkownik kliknie powiadomienie.
Więcej informacji znajdziesz w artykule Odbieranie i obsługa wiadomości.
Dlaczego podczas wysyłania wiadomości do aktywnej instancji aplikacji przywróconej z kopii zapasowej pojawia się błąd 404?
FID (identyfikator instalacji Firebase) to identyfikator instancji aplikacji. Domyślnie dane instalacji Firebase są zapisywane w kopii zapasowej i przywracane. W przypadku przywracania przywrócona instancja aplikacji i jej pierwotna instancja mają ten sam identyfikator FID. FCM przechowuje tylko 1 token na FID, więc jeśli używane są zarówno pierwotna, jak i przywrócona instancja aplikacji, to gdy jedna instancja aplikacji zarejestruje się w FCM, token drugiej instancji aplikacji zostanie usunięty, co spowoduje błędy 404.
Zalecamy deweloperom wykonanie tych czynności w aplikacji:
- Wyklucz dane instalacji Firebase z kopii zapasowej. Dane instalacji Firebase są przechowywane w pliku
PersistedInstallation....json. Nazwa pliku jest stała dla aplikacji. Na przykład:<exclude domain="file" path="PersistedInstallation.W0R...GQ.json" />
Firma Apple ogłosiła, że wycofuje starszy protokół binarny dla APNs. Czy muszę coś zrobić?
Nie. W 2017 roku usługa Firebase Cloud Messaging przeszła na protokół APNs oparty na HTTP/2. Jeśli używasz FCM do wysyłania powiadomień na urządzenia z iOS, nie musisz nic robić.
Limity FCM
Jak powiadomić dużą bazę klientów w ciągu 2 minut?
Ten przypadek użycia nie jest obsługiwany. Musisz rozłożyć ruch na 5 minut.
Moja aplikacja powiadamia użytkowników o wydarzeniach, a te wiadomości muszą być dostarczane natychmiast, aby wspierać mój model biznesowy. Czy mogę zwiększyć limit?
Z tego powodu nie możemy zwiększyć limitu. Musisz rozłożyć ruch na 5 minut, aby uniknąć skoków ruchu.
Moje wiadomości dotyczą zaplanowanych wydarzeń. Jak mogę wysyłać cały ruch na początku godziny?
Zalecamy rozpoczęcie wysyłania powiadomień co najmniej 5 minut przed wydarzeniem. Możesz też wysyłać wiadomości z danymi i zaimplementować odpowiednik modułu obsługi onMessageReceived na swojej platformie, aby planować powiadomienia lokalne z wyprzedzeniem.
Jak mogę monitorować wykorzystanie limitu?
Zapoznaj się ze wskazówkami Google Cloud dotyczącymi monitorowania wskaźników limitów i wyświetlania ich na wykresie.
Błędy 429 są trudne do obsłużenia dla mnie i mojej firmy. Czy mogę uzyskać zwolnienie lub większy limit, aby uniknąć błędów 429?
Rozumiemy, że limity mogą być uciążliwe, ale są one niezbędne do zapewnienia niezawodności usługi i nie możemy robić wyjątków. Użyj ponownych prób, aby prawidłowo obsługiwać błędy 429.
Ile czasu zajmie rozpatrzenie mojej prośby o zwiększenie limitu?
Twoja prośba o zwiększenie limitu zależy od tego, jak korzystasz z FCM. W każdym przypadku możesz oczekiwać odpowiedzi w ciągu kilku dni roboczych. W niektórych przypadkach możemy poprosić Cię o dodatkowe informacje dotyczące korzystania z usługi FCM i różnych okoliczności, co może wydłużyć proces. Jeśli wszystkie wymagania zostaną spełnione, większość próśb zostanie rozpatrzona w ciągu 2 tygodni.
Czy mogę uzyskać większy limit na potrzeby tymczasowego wydarzenia?
Możesz poprosić o dodatkowy limit, aby obsłużyć wydarzenie trwające do 1 miesiąca. Prześlij prośbę co najmniej miesiąc przed wydarzeniem i podaj dokładne informacje o tym, kiedy się ono zaczyna i kończy, a firma FCM dołoży wszelkich starań, aby spełnić Twoją prośbę. Jeśli zwiększymy limity, po zakończeniu wydarzenia zostaną one przywrócone do poprzedniego stanu.
Czy mój obecny limit może ulec zmianie?
Google nie robi tego bez powodu, ale limity mogą zostać zmienione w razie potrzeby, aby chronić integralność systemu. Jeśli to możliwe, Google powiadomi Cię o takich zmianach z wyprzedzeniem. Aktualizuj kontakty Cloud MSA, aby zwiększyć szanse na otrzymywanie powiadomień o usługach.
FCM wycofane starsze interfejsy API
Interfejsy API po stronie serwera zostaną wycofane we wrześniu 2026 r.
Które interfejsy API i funkcje zostały wycofane i zostaną wyłączone? Co mam zrobić, jeśli używam tych interfejsów API?
Wszystkie interfejsy API serwera InstanceId i funkcja grupy urządzeń zostały wycofane i zostaną wyłączone 29 września 2027 r. W tabeli poniżej znajdziesz więcej informacji o wycofanych interfejsach API i funkcjach oraz o wymaganych działaniach.
| Nazwa interfejsu API | Punkt końcowy API | Przeznaczenie | Wpływ na klienta | Wymagane działanie |
|---|---|---|---|---|
| Interfejs API informacji o identyfikatorze instancji | https://iid.googleapis.com/iid/info | Uzyskiwanie informacji związanych z identyfikatorem InstanceId lub tokenem FCM | Po 29 września 2027 r. żądania wysyłane do tego interfejsu API będą kończyć się niepowodzeniem. | Klienci, którzy używają interfejsu API do weryfikacji tokenów, powinni używać interfejsu API wysyłania FCM w wersji 1 i ustawić parametr validate_only na wartość „true”.
Klienci, którzy używają interfejsu API do uzyskiwania informacji o subskrypcji tematów, powinni przejść na nowy interfejs API do subskrypcji tematów. |
| Interfejs API subskrypcji tematów InstanceId | https://iid.googleapis.com/iid/v1/…/rel/topics https://iid.googleapis.com/iid/v1:batchAdd https://iid.googleapis.com/iid/v1:batchRemove |
Subskrybowanie tokenów do tematu za pomocą starszego interfejsu API subskrypcji tematów. | Po 29 września 2027 r. żądania wysyłane do tych interfejsów API zaczną kończyć się niepowodzeniem. | Przejdź na nowy interfejs API serwera subskrypcji tematów FCM, aby umożliwić subskrybowanie i anulowanie subskrypcji tematów. |
| Interfejs API do importu zbiorczego InstanceId | https://iid.googleapis.com/iid/v1:batchImport | Tworzenie tokenów FCM dla iOS zbiorczo po stronie serwera. | Po 29 września 2027 r. żądania wysyłane do tego interfejsu API będą kończyć się niepowodzeniem.
Tworzenie rejestracji FCM z tokenów APN po stronie serwera nie będzie obsługiwane. |
Możesz używać usługi APNs firmy Apple do wysyłania powiadomień za pomocą tokenów APNs.
Aby uzyskać dodatkowe korzyści, które zapewnia FCM, zintegruj aplikację z pakietem SDK FCM na iOS, który utworzy rejestracje FCM na kliencie. |
| Interfejs API zarządzania grupami urządzeń | https://fcm.googleapis.com/fcm/notification https://fcm.googleapis.com/gcm/notification https://fcm.googleapis.com/iid/notification https://fcm.googleapis.com/notification |
dodawanie, usuwanie i pobieranie członków grupy urządzeń; | Po 29 września 2027 r. żądania wysyłane do tego interfejsu API będą kończyć się niepowodzeniem. | Zapoznaj się ze wskazówkami dotyczącymi migracji z tej funkcji.
Wiadomości można nadal wysyłać do poszczególnych rejestracji FCM zamiast do tokenów grupowych. |
| Wysyłanie do grupy urządzeń | https://fcm.googleapis.com/v1/projects/…/messages:send | Wysyłanie wiadomości do grup urządzeń za pomocą klucza notification_key grupy. | Ten interfejs API będzie nadal działać, ale po 29 września 2027 r. nie będzie obsługiwać tokenów grup urządzeń. |
Czy wycofanie będzie miało wpływ na mnie, jeśli do zarządzania subskrypcjami tematów używam pakietu Firebase Admin SDK? Co mam zrobić?
Jeśli do zarządzania subskrypcjami tematów używasz starszych wersji pakietu Firebase Admin SDK, wycofanie będzie miało na Ciebie wpływ. Musisz uaktualnić pakiet Firebase Admin SDK do tych wersji:
| Platforma | Wersja pakietu Admin SDK, której dotyczy problem | Wersja pakietu Admin SDK, do której ma zostać przeprowadzona aktualizacja |
|---|---|---|
| Node.js | <=14.4.0 | >=14.5.0 |
| Python | <=7.6.0 | >=7.7.0 |
| Java | <=9.10.0 | >=9.11.0 |
| Go | <=4.21.0 | >=4.22.0 |
| .NET | <=3.6.0 | >=3.7.0 |
Czy przed 29 września 2027 r. nastąpi pogorszenie jakości usług?
Nie. Masz 12 miesięcy na przejście z wycofanych interfejsów API na alternatywne rozwiązania bez obniżania jakości usług. Zdecydowanie zalecamy jak najszybsze zaplanowanie migracji, aby uniknąć problemów związanych z wycofaniem usługi.
Po 29 września 2027 r. podczas wywoływania wycofanych interfejsów API będą występować błędy.
Czy nowi użytkownicy mogą zacząć korzystać z wycofanych interfejsów API lub funkcji przed ich wyłączeniem?
Nowi użytkownicy mogą zacząć korzystać z wycofanych interfejsów API i funkcji przed 1 stycznia 2027 r. Po 1 stycznia 2027 r. nowi użytkownicy nie będą mogli korzystać z wycofanych interfejsów API. Użytkownicy, którzy korzystają z wycofanych interfejsów API, mogą nadal z nich korzystać do 29 września 2027 r.
Najczęstsze pytania dotyczące AndroidConfigV2
Jak długo będzie obsługiwany starszy interfejs AndroidConfig (v1) API?
FCM planuje nadal obsługiwać ładunki w wersji 1 AndroidConfig przez wiele lat po udostępnieniu wersji GA AndroidConfigV2. Chociaż harmonogram migracji obejmuje kilka lat, AndroidConfigV2 zapewnia bardziej przewidywalne dostarczanie powiadomień, dlatego zachęcamy do jak najszybszej migracji.
Które wersje systemu operacyjnego Android są obsługiwane przez AndroidConfigV2?
AndroidConfigV2 będzie obsługiwany na wszystkich wersjach Androida obsługiwanych przez Google. Po wycofaniu starszej wersji interfejsu API (v1) obsługiwane będą wszystkie urządzenia oprócz tych, które mają ponad 10 lat.
Czy AndroidConfigV2 będzie dostarczać ładunki na urządzenia, które obsługują tylko starszy interfejs w wersji 1, i w jakiej kolejności należy wdrażać zmiany?
Tak. Gdy wysyłasz żądanie AndroidConfigV2, FCM i GMS Core automatycznie tłumaczą ładunek na potrzeby urządzeń ze starszymi pakietami SDK klienta lub aplikacji, które nie zastąpiły jeszcze onNotificationReceived() ani onBackgroundSyncReceived(), i dostarczają go za pomocą onMessageReceived().
Dlaczego AndroidConfigV2 wymaga zwracania powiadomień za pomocą pakietu SDK FCM zamiast bezpośredniego wywoływania NotificationManager.notify()?
Zwracając NotificationResponse do pakietu SDK FCM o otwartym kodzie źródłowym lub używając FcmNotificationManager:
- Aplikacja otrzymuje chronione okno wykonywania, w którym może odszyfrować lub dostosować powiadomienie.
- Jeśli aplikacja nie zdąży, GMS Core zapewnia terminowe dostarczenie, publikując powiadomienie zapasowe skonfigurowane w
remote_notification.notification.
Czy AndroidConfigV2 obsługuje powiadomienia inaczej, gdy aplikacja działa na pierwszym planie, a inaczej, gdy działa w tle?
Nie. W przeciwieństwie do starszych powiadomień w wersji 1 AndroidConfigV2 nie rozdziela routingu wiadomości w zależności od tego, czy aplikacja działa na pierwszym planie, czy w tle.
Gdy wysyłasz RemoteNotification, powiadomienie jest automatycznie wyświetlane w obu stanach, chyba że ustawisz mutable_content: true i wyraźnie wyciszysz je w onNotificationReceived() za pomocą NotificationResponse.createEmpty().
Ile czasu ma aplikacja na obsługę zmiennego powiadomienia RemoteNotification?
Gdy mutable_content: true jest ustawione na RemoteNotification, aplikacja ma do 20 sekund w onNotificationReceived() na odszyfrowanie ładunków, pobranie małych zasobów (takich jak awatary) lub skontaktowanie się z serwerem aplikacji przed zwróceniem NotificationResponse. Jeśli wywołanie zwrotne przekroczy 20 sekund, wykonanie zostanie anulowane, a GMS Core automatycznie opublikuje powiadomienie zastępcze na podstawie ładunku remote_notification.notification.
Jak działa egzekwowanie blokowania powiadomień w przypadku zmiennych powiadomień RemoteNotification?
Aplikacje mogą pomijać RemoteNotification, zwracając NotificationResponse.suppress() z onNotificationReceived(). Na przykład gdy czat jest wyciszony, nadawca jest zablokowany lub ładunek zaszyfrowany metodą end-to-end nie przechodzi weryfikacji.
- W tle: aplikacja może pominąć do 25% otrzymanych wiadomości
RemoteNotificationw okresie obserwacji. Jeśli współczynnik pomijania powiadomień w tle w Twojej aplikacji przekracza 25%, GMS Core automatycznie renderuje i publikuje powiadomienie zastępcze z ładunkuremote_notification.notification. - Na pierwszym planie: możesz wyłączyć wszystkie powiadomienia zdalne, gdy aplikacja jest aktywna na pierwszym planie. Możesz na przykład wyświetlić komunikat w aplikacji lub zaktualizować otwarty ekran czatu zamiast publikować powiadomienie systemowe.
Czy moja aplikacja może publikować wiele powiadomień lub anulować istniejące powiadomienie z jednego RemoteNotification?
Tak. Aby anulować lub opublikować wiele powiadomień, wykonaj te czynności:
- Anulowanie pojedynczego powiadomienia: zwróć
NotificationResponse.createCancel(tag, id)zonNotificationReceived(), aby odrzucić wcześniej opublikowane powiadomienie. - Publikowanie wielu powiadomień lub łączenie anulowań i publikacji: wywołaj
getFcmNotificationManager(message)wewnątrzonNotificationReceived(), aby wielokrotnie wywołaćpostNow(tag, id, notification)icancelNow(tag, id), a po zakończeniu zwróćmanager.finished().
Czy niestandardowe widoki RemoteViews mogą działać z AndroidConfigV2?
Tak, niestandardowe widoki RemoteViews będą działać z AndroidConfigV2.
onNotificationReceived() zwraca standardowy obiekt Notification Androida, więc wszystkie standardowe interfejsy API powiadomień Androida, takie jak setCustomContentView(), są nadal obsługiwane. Pamiętaj, że RemoteViews i Views są w trybie konserwacji i zalecamy przejście na Compose.