Naszym celem jest zawsze dostarczanie wszystkich wiadomości wysyłanych za pomocą FCM. Jednak dostarczanie każdej wiadomości może czasami pogorszyć ogólne wrażenia użytkowników. W innych przypadkach musimy wyznaczyć granice, aby zapewnić wszystkim nadawcom skalowalną usługę FCM. Rodzaje limitów i kwot opisane w tej sekcji pomagają nam zachować równowagę między tymi ważnymi czynnikami.
Ograniczanie liczby wiadomości wysyłanych do klienta
W interfejsie HTTP v1 API wprowadziliśmy limity minutowe dla każdego projektu w przypadku przesyłania wiadomości do urządzeń. Domyślny limit 600 tys. wiadomości na minutę obejmuje ponad 99% FCM deweloperów, a jednocześnie chroni stabilność systemu i minimalizuje wpływ projektów o dużym wzroście aktywności.
Nagłe skoki natężenia ruchu mogą powodować błędy przekroczenia limitu. W przypadku przekroczenia limitu system zwraca kod stanu HTTP 429 (QUOTA_EXCEEDED), dopóki limit nie zostanie uzupełniony w następnej minucie. Odpowiedzi 429 mogą być też zwracane w sytuacjach przeciążenia, dlatego zdecydowanie zalecamy obsługę odpowiedzi 429 zgodnie z opublikowanymi zaleceniami.
Uwaga:
- Limit dotyczący wysyłania danych do klienta mierzy wiadomości, a nie żądania.
- Błędy klienta (kody stanu HTTP 400–499) są zliczane (z wyjątkiem kodów 429).
- Limity są określane na minutę, ale nie są powiązane z zegarem.
Limit monitorowania
Limity, wykorzystanie i błędy możesz wyświetlić w konsoli Google Cloud:
- Otwórz Google Cloudkonsolę
- Kliknij Interfejsy API i usługi.
- Na liście tabel wybierz Firebase Cloud Messaging API.
- Kliknij LIMITY PRZYDZIAŁU I LIMITY SYSTEMU.
UWAGA: te wykresy nie są dokładnie zsynchronizowane z minutami limitu, co oznacza, że błędy 429 mogą być zwracane, gdy natężenie ruchu wydaje się być poniżej limitu.
Poproś o zwiększenie limitu
Zanim poprosisz o zwiększenie limitu, upewnij się, że:
- Wykorzystanie regularnie wynosi co najmniej 80% limitu przez co najmniej 5 minut z rzędu dziennie.
- Współczynnik błędów klienta jest mniejszy niż 5%, zwłaszcza w okresach największego natężenia ruchu.
- Stosujesz sprawdzone metody wysyłania wiadomości na dużą skalę.
Jeśli spełniasz te kryteria, możesz przesłać prośbę o zwiększenie limitu maksymalnie o 25% i FCM dołoży wszelkich starań, aby spełnić tę prośbę (nie możemy zagwarantować zwiększenia limitu).
Jeśli potrzebujesz większego limitu wiadomości wysyłanych do użytkowników ze względu na zbliżające się wprowadzenie usługi lub tymczasowe wydarzenie, poproś o zwiększenie limitu z co najmniej 15-dniowym wyprzedzeniem, aby mieć wystarczająco dużo czasu na rozpatrzenie prośby. W przypadku dużych żądań (ponad 18 mln wiadomości na minutę) wymagane jest powiadomienie z co najmniej 30-dniowym wyprzedzeniem. Żądania dotyczące premier i wydarzeń specjalnych nadal podlegają wymaganiom dotyczącym współczynnika błędów klienta i sprawdzonych metod.
Zobacz też najczęstsze pytania dotyczące FCM limitów.
Limit wiadomości związanych z tematem
Szybkość dodawania i usuwania subskrypcji tematu jest ograniczona do 3000 zapytań na sekundę na projekt.
Informacje o szybkości wysyłania wiadomości znajdziesz w artykule Ograniczanie rozsyłania.
Ograniczanie zwielokrotnienia wyjściowego
Rozsyłanie wiadomości to proces wysyłania wiadomości na wiele urządzeń, np. gdy kierujesz wiadomości na tematy i grupy lub gdy używasz kompozytora powiadomień do kierowania na grupy odbiorców lub segmenty użytkowników.
Rozsyłanie wiadomości nie jest natychmiastowe, więc czasami kilka rozsyłań jest w toku jednocześnie. Ograniczamy liczbę równoczesnych rozsyłań wiadomości na projekt do 1000. Następnie możemy odrzucić dodatkowe żądania rozsyłania lub odłożyć rozsyłanie żądań do czasu zakończenia niektórych z już trwających rozsyłań.
Na rzeczywistą osiągalną szybkość rozsyłania ma wpływ liczba projektów, które w tym samym czasie wysyłają żądania rozsyłania. Szybkość rozsyłania 10 000 zapytań na sekundę w przypadku pojedynczego projektu nie jest niczym niezwykłym, ale nie jest gwarantowana i zależy od całkowitego obciążenia systemu. Pamiętaj, że dostępna pojemność rozgłaszania jest dzielona między projekty, a nie między żądania rozgłaszania. Jeśli w projekcie są 2 rozsyłania w toku, każde z nich będzie miało tylko połowę dostępnej szybkości rozsyłania. Zalecany sposób na zmaksymalizowanie szybkości rozsyłania to posiadanie tylko jednego aktywnego rozsyłania w danym momencie.
Ograniczanie liczby zwijanych wiadomości
Zgodnie z opisem w sekcji Zwinięte wiadomości zwinięte wiadomości to powiadomienia bez treści, które są zaprojektowane tak, aby zwijać się jeden na drugim. Jeśli deweloper zbyt często wysyła ten sam komunikat do aplikacji, opóźniamy (ograniczamy) wysyłanie wiadomości, aby zmniejszyć wpływ na baterię użytkownika.
Jeśli na przykład wyślesz dużą liczbę nowych żądań synchronizacji e-maili na jedno urządzenie, możemy opóźnić kolejne żądanie synchronizacji o kilka minut, aby urządzenie mogło synchronizować dane ze średnią niższą częstotliwością. Ograniczenie to jest stosowane wyłącznie w celu zmniejszenia wpływu na baterię, który odczuwa użytkownik.
Jeśli Twój przypadek użycia wymaga wzorców wysyłania o dużej częstotliwości, odpowiednim wyborem mogą być wiadomości niezwijalne. W przypadku takich wiadomości zadbaj o to, aby zawierały treść, co pozwoli zmniejszyć zużycie baterii.
Ograniczamy zwijane wiadomości do 20 wiadomości na aplikację na urządzenie, a następnie co 3 minuty dodajemy 1 wiadomość.
Maksymalna częstotliwość wysyłania wiadomości na jedno urządzenie
Na Androidzie możesz wysłać do 240 wiadomości na minutę i 5000 wiadomości na godzinę na jedno urządzenie. Ten wysoki próg ma uwzględniać krótkotrwałe skoki ruchu, np. gdy użytkownicy szybko ze sobą rozmawiają na czacie. Ten limit zapobiega przypadkowemu wyczerpaniu baterii urządzenia przez błędy w logice wysyłania.
W przypadku iOS zwracamy błąd, gdy liczba żądań przekracza limity APNs.