Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Najlepsze praktyki zarządzania tokenami rejestracji FCM

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Jeśli używasz interfejsów API FCM do programowego kompilowania wysyłania żądań, może się okazać, że z biegiem czasu marnujesz zasoby, wysyłając wiadomości do nieaktywnych urządzeń z przestarzałymi tokenami rejestracji. Taka sytuacja może wpłynąć na dane o dostarczaniu wiadomości raportowane w konsoli Firebase lub dane wyeksportowane do BigQuery, co objawia się drastycznym (ale w rzeczywistości nieprawidłowym) spadkiem współczynnika dostarczania. W tym przewodniku omówiono niektóre środki, które możesz podjąć, aby zapewnić skuteczne kierowanie wiadomości i prawidłowe raportowanie dostarczania.

Podstawowe najlepsze praktyki

Istnieje kilka podstawowych praktyk, których należy przestrzegać w każdej aplikacji korzystającej z interfejsów API FCM do programowego tworzenia żądań wysyłania. Główne najlepsze praktyki to:

  • Przechowuj tokeny rejestracji na swoim serwerze. Ważną rolą serwera jest śledzenie tokena każdego klienta i aktualizowanie listy aktywnych tokenów. Zdecydowanie zalecamy zaimplementowanie znacznika czasu tokenu w kodzie i serwerach oraz aktualizowanie tego znacznika czasu w regularnych odstępach czasu.
  • Usuń przechowywane tokeny, które stają się nieaktualne . Oprócz usuwania tokenów w oczywistych przypadkach nieprawidłowych odpowiedzi tokenów prawdopodobnie będziesz musiał monitorować inne oznaki, że token jest nieaktualny. W tym przewodniku omówiono niektóre z możliwości osiągnięcia tego celu.

Pobierz i przechowuj tokeny rejestracyjne

Podczas początkowego uruchamiania aplikacji zestaw FCM SDK generuje token rejestracji dla wystąpienia aplikacji klienckiej. Jest to token, który należy uwzględnić w ukierunkowanych żądaniach wysyłania z interfejsu API lub dodać do subskrypcji tematów w celu kierowania na tematy.

Jak wspomniano w naszych przewodnikach po konfiguracji klienta, Twoja aplikacja powinna pobrać ten token przy pierwszym uruchomieniu i zapisać go na serwerze aplikacji wraz ze znacznikiem czasu . Ta sygnatura czasowa musi zostać zaimplementowana przez Twój kod i serwery, ponieważ nie jest dostarczana przez pakiety SDK FCM.

Ponadto ważne jest, aby zapisać token na serwerze i aktualizować znacznik czasu za każdym razem, gdy się zmieni, na przykład kiedy:

  • Aplikacja zostanie przywrócona na nowym urządzeniu
  • Użytkownik odinstalowuje/ponownie instaluje aplikację
  • Użytkownik usuwa dane aplikacji.

Wykryj nieprawidłowe odpowiedzi tokena z zaplecza FCM

Upewnij się, że wykrywasz nieprawidłowe odpowiedzi tokena z FCM i odpowiadaj, usuwając z systemu wszystkie tokeny rejestracji, o których wiadomo, że są nieprawidłowe. W przypadku interfejsu API HTTP v1 te komunikaty o błędach mogą wskazywać, że żądanie wysłania dotyczy nieaktualnych lub nieprawidłowych tokenów:

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

Zobacz kody błędów , aby uzyskać więcej informacji.

Jeśli otrzymasz jedną z tych odpowiedzi dotyczących tokenu docelowego, możesz bezpiecznie usunąć swój rekord tego tokena, ponieważ nigdy już nie będzie ważny. Należy jednak pamiętać, że nadal będą zdarzały się przypadki, w których token jest w rzeczywistości nieważny, ale nic na to nie wskazuje. Na przykład czasami backend FCM nie może zweryfikować, czy urządzenie na stałe przeszło w tryb offline.

Zapewnienie świeżości tokena rejestracji

Ustalenie, czy token jest świeży czy nieaktualny, nie zawsze jest proste. Aby uwzględnić wszystkie przypadki, należy przyjąć próg, w którym tokeny są przestarzałe; nasza rekomendacja to dwa miesiące. Każdy token starszy niż dwa miesiące prawdopodobnie będzie urządzeniem nieaktywnym; w przeciwnym razie aktywne urządzenie odświeżyłoby swój token.

Regularnie aktualizuj tokeny

Zalecamy okresowe pobieranie i aktualizowanie wszystkich tokenów rejestracji na serwerze. Wymaga to:

  • Dodaj logikę aplikacji w aplikacji klienckiej, aby pobrać bieżący token przy użyciu odpowiedniego wywołania interfejsu API (takiego jak token(completion): dla platform Apple lub getToken() dla systemu Android), a następnie wyślij bieżący token do serwera aplikacji w celu przechowywania (z sygnaturą czasową ). Może to być comiesięczne zadanie skonfigurowane tak, aby obejmowało wszystkich klientów/tokeny.
  • Dodaj logikę serwera, aby aktualizować sygnaturę czasową tokenu w regularnych odstępach czasu, niezależnie od tego, czy token został zmieniony.

Niezależnie od tego, jaki wzorzec czasu zastosujesz, pamiętaj o okresowej aktualizacji tokenów. Częstotliwość aktualizacji raz w miesiącu prawdopodobnie zapewnia dobrą równowagę między wpływem na baterię a wykrywaniem nieaktywnych tokenów rejestracji. Wykonując to odświeżenie, zapewniasz również, że każde urządzenie, które stanie się nieaktywne, odświeży swoją rejestrację, gdy stanie się ponownie aktywne. Nie ma korzyści z odświeżania częściej niż raz w tygodniu.

Anuluj subskrypcję nieaktualnych tokenów z tematów

Zarządzanie subskrypcjami tematów w celu usunięcia przestarzałych tokenów rejestracji to kolejna kwestia. Obejmuje dwa kroki:

  1. Twoja aplikacja powinna ponownie zasubskrybować tematy raz w miesiącu i/lub za każdym razem, gdy zmieni się token rejestracji. Tworzy to samonaprawiające się rozwiązanie, w którym subskrypcje pojawiają się ponownie automatycznie, gdy aplikacja staje się ponownie aktywna.
  2. Jeśli instancja aplikacji jest bezczynna przez 2 miesiące (lub przez własne okno nieaktualności), należy anulować subskrypcję tematów za pomocą pakietu Firebase Admin SDK , aby usunąć mapowanie tokenów/tematów z zaplecza FCM.

Zaletą tych dwóch kroków jest to, że Twoje fanouty będą występować szybciej, ponieważ jest mniej przestarzałych tokenów, do których można się rozdzielić, a Twoje nieaktualne wystąpienia aplikacji zostaną automatycznie ponownie zasubskrybowane, gdy będą ponownie aktywne.

Mierzenie powodzenia dostawy

Ogólnie zalecamy kierowanie wiadomości na podstawie działań zaobserwowanych lub przechwyconych z aktywnie używanych wystąpień aplikacji. Jest to szczególnie ważne, jeśli regularnie wysyłasz wiadomości do tematów z dużą liczbą subskrybentów; jeśli część tych subskrybentów jest faktycznie nieaktywna, wpływ na statystyki wyświetlania może być znaczny w czasie.

Zanim skierujesz wiadomości na token, rozważ:

  • Czy Google Analytics, dane zebrane w BigQuery lub inne sygnały śledzenia wskazują, że token jest aktywny?
  • Czy poprzednie próby dostarczenia nie powiodły się konsekwentnie przez pewien czas?
  • Czy token rejestracji został zaktualizowany na Twoich serwerach w ciągu ostatnich dwóch miesięcy?
  • Czy w przypadku urządzeń z systemem Android interfejs API danych FCM zgłasza wysoki procent niepowodzeń dostarczenia wiadomości z powodu droppedDeviceInactive ?

Więcej informacji na temat dostarczania zawiera sekcja Opis dostarczania wiadomości .