Funkcja wiadomości na temat tematów w FCM, wykorzystująca model publikowania/subskrypcji, umożliwia wysyłanie wiadomości na wiele urządzeń, które wyraziły zgodę na dany temat. W razie potrzeby tworzysz wiadomości dotyczące tematu, a FCM zajmuje się ich kierowaniem i dostarczaniem do odpowiednich urządzeń.
Użytkownicy aplikacji do prognozowania pływów mogą np. włączyć temat „alerty o prądach przypływowych” i otrzymywać powiadomienia o najlepszych warunkach do połowu ryb w określonych obszarach. Użytkownicy aplikacji sportowej mogą subskrybować automatyczne powiadomienia o wynikach na żywo ulubionych drużyn.
O czym warto pamiętać w przypadku tematów:
Komunikaty tematyczne najlepiej sprawdzają się w przypadku takich treści jak pogoda czy inne publicznie dostępne informacje.
Wiadomości dotyczące tematów są optymalizowane pod kątem przepustowości, a nie opóźnienia. Aby szybko i bezpiecznie dostarczać wiadomości na pojedyncze urządzenia lub do małych grup urządzeń, kieruj wiadomości na tokeny rejestracji, a nie na tematy.
Jeśli chcesz wysyłać wiadomości na wiele urządzeń na jednego użytkownika, rozważ wysyłanie wiadomości na grupę urządzeń w takich przypadkach.
Wiadomości dotyczące tematów obsługują nieograniczoną liczbę subskrypcji dla każdego tematu. FCM egzekwuje jednak limity w tych obszarach:
- Jedna instancja aplikacji może subskrybować maksymalnie 2000 tematów.
- Jeśli do subskrybowania instancji aplikacji używasz importu zbiorczego, każda prośba jest ograniczona do 1000 instancji aplikacji.
- Częstotliwość nowych subskrypcji jest ograniczona do określonej liczby na projekt. Jeśli w krótkim czasie wyślesz zbyt wiele próśb o subskrypcję, serwery FCM odpowiedzą komunikatem
429 RESOURCE_EXHAUSTED
(„limit przekroczony”). Podejmuje ponowne próby ze wzrastającym czasem do ponowienia.
Subskrybowanie tematu przez aplikację kliencką
Aplikacje klienckie mogą subskrybować dowolny istniejący temat lub utworzyć nowy. Gdy aplikacja klienta subskrybuje nową nazwę tematu (której nie ma jeszcze w Twoim projekcie Firebase), w FCM tworzony jest nowy temat o tej nazwie, a każdy klient może go następnie subskrybować.
Aby zasubskrybować temat, wywołaj funkcję subscribeToTopic()
z nazwą tematu. Ta metoda zwraca błąd Future
, który zostaje rozwiązany, gdy subskrypcja się powiodła:
await FirebaseMessaging.instance.subscribeToTopic("topic");
Aby anulować subskrypcję, wyślij wiadomość unsubscribeFromTopic()
z nazwą tematu.
Atrybuty subscribeToTopic()
i unsubscribeFromTopic()
nie są obsługiwane w przypadku klientów internetowych. Aby dowiedzieć się, jak zarządzać subskrypcjami użytkowników w internecie, przeczytaj artykuł Wysyłanie wiadomości do tematów dotyczących stron internetowych i JavaScript.
Dalsze kroki
- Dowiedz się, jak wysyłać wiadomości dotyczące tematu.
- Dowiedz się, jak zarządzać subskrypcjami tematów na serwerze.