Ustawianie priorytetu wiadomości i zarządzanie nim

Priorytet dostarczania w Androidzie możesz przypisać do kolejnych wiadomości na dwa sposoby: normalny i wysoki. Dostarczanie wiadomości zwykłych i o wysokim priorytecie odbywa się w następujący sposób:

  • Normalny priorytet. Jest to domyślny priorytet wiadomości z danymi. Wiadomości o normalnym priorytecie są dostarczane natychmiast, gdy urządzenie nie jest uśpione. Gdy urządzenie jest w trybie uśpienia, dostarczanie może być opóźnione, aby oszczędzać baterię do momentu uśpienia urządzenia. W przypadku mniej pilnych wiadomości, np. powiadomień o nowych e-mailach, synchronizowania interfejsu użytkownika lub synchronizowania danych aplikacji w tle, wybierz normalny priorytet dostarczania.

    Gdy na Androidzie otrzymasz komunikat o normalnym priorytecie z prośbą o synchronizację danych w tle dla Twojej aplikacji, możesz zaplanować zadanie w usłudze WorkManager tak, aby zostało ono wykonane, gdy sieć będzie dostępna.

  • Wysoki priorytet. FCM próbuje natychmiast dostarczyć wiadomości o wysokim priorytecie, dzięki czemu w razie potrzeby może wybudzić urządzenie do snu i przetwarzać w ograniczonym zakresie (w tym bardzo ograniczony dostęp do sieci). Wiadomości o wysokim priorytecie zwykle powinny zachęcać użytkownika do interakcji z aplikacją lub z jej powiadomieniami.

Obsługa wiadomości i obniżanie priorytetu wiadomości w Androidzie

Wiadomości o wysokim priorytecie w Androidzie są przeznaczone do przesyłania pilnych informacji, które są widoczne dla użytkowników i powinny otrzymywać powiadomienia. Jeśli FCM wykryje wzorzec, zgodnie z którym wiadomości nie powodują otrzymywania powiadomień dla użytkowników, możemy nadać wiadomościom normalny priorytet lub przekazać je do obsługi przez Usługi Google Play.

FCM analizuje 7 dni działania wiadomości, aby określić, czy chcesz obniżyć priorytet wiadomości, czy ustawić je pośrednio. Decyduje o tym niezależnie dla każdego wystąpienia aplikacji. Jeśli w odpowiedzi na wiadomości o wysokim priorytecie powiadomienia są wyświetlane w sposób widoczny dla użytkownika, nie będzie to miało wpływu na przyszłe wiadomości o wysokim priorytecie.

Przekazywanie powiadomień w Usługach Google Play

Powiadomienia o wysokim priorytecie (nie wiadomości dotyczące danych), które spełniają określone kryteria, są przesyłane przez serwer proxy przez Usługi Google Play i nie są obniżane. Oznacza to, że Usługi Google Play wyświetlają powiadomienia w imieniu aplikacji, bez potrzeby uruchamiania aplikacji. Ma to na celu poprawę ogólnych wrażeń użytkowników urządzeń z Androidem.

Uwaga: powiadomienia przesyłane przez serwer proxy wprowadzają zmiany w sposobie raportowania statystyk związanych z otrzymywanymi wiadomościami:

  • Aby można było raportować powiadomienia z serwera proxy, aplikacja musi korzystać z pakietu SDK FCM w wersji 24.0.0 lub nowszej.
  • Możesz zauważyć opóźnienia lub spadek liczby otrzymanych wiadomości w porównaniu z liczbą sprzed wprowadzenia powiadomień przez serwer proxy. Dzieje się tak, ponieważ statystyki powiadomień przesyłanych przez serwer proxy są raportowane dopiero po uruchomieniu aplikacji i mogą nie zostać w ogóle zgłoszone, jeśli nie spowoduje to jej otwarcia.

Ten sposób przekazywania powiadomień z powiadomień jest domyślny w przypadku aplikacji korzystających z Androida Q+ i Usług Google Play w wersji 19054000 lub nowszej. Wiadomości wysyłane przez interfejs HTTP v1 API są przesyłane przez serwer proxy, ale wiadomości wysyłane przez konsolę Firebase lub starsze interfejsy API nie będą przesyłane przez serwer proxy. Pamiętaj, że ta funkcja jest obecnie w wersji beta i może ulec zmianie.

Zdecydowanie zalecamy pozostawienie włączonego przekazywania dostępu, ponieważ zapewnia to korzyści związane z baterią i pamięcią urządzenia, ale możesz zrezygnować z tego zachowania w jeden z tych sposobów:

  • Na poziomie aplikacji: w manifeście dodaj dyrektywę <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • Na poziomie instancji aplikacji: w przypadku instancji aplikacji ustaw fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> w ramach procesu UI aplikacji w zależności od konkretnego przypadku użycia.
  • Dla poszczególnych wiadomości: ustaw klucz proxy na DENY w obiekcie AndroidNotification dla żądania wysłania.

Mierzenie obniżenia priorytetu wiadomości na Androidzie

  • Poszczególne wiadomości. Podczas dostarczania możesz określić, czy dla danej wiadomości priorytet został obniżony, porównując jej priorytet z funkcji getPriority() z pierwotnym priorytetem z getOriginalPriority().

  • Wszystkie wiadomości. Interfejs FCM Aggregate Delivery Data API może raportować, jaki odsetek wszystkich wiadomości wysyłanych do Androida ma niższy priorytet. Niektóre wiadomości mogą zostać pominięte w raportach zbiorczych, ale powinny przedstawiać globalny widok współczynników obniżenia priorytetu wiadomości. Więcej informacji i przykładowy kod do wysyłania zapytań do interfejsu API znajdziesz w artykule o zagregowanych danych o wyświetlaniu. Możesz go też przejrzeć w narzędziu API Explorer.

  • Powiadomienia przez serwer proxy. Powiadomienia przesyłane przez serwer proxy nie są uwzględniane w bieżących danych dotyczących wyświetlania w FCM ani Google Analytics, dlatego możesz zauważyć spadek danych o wyświetlaniu powiadomień nawet o 15%. Do raportowania wiadomości przesyłanych przez serwer proxy używaj interfejsu FCM Aggregate Delivery Data API. ProxyNotificationInsightPercents podaje odsetek powiadomień przesłanych przez serwer proxy oraz szczegółowe informacje na temat wiadomości, których nie udało się przesłać przez serwer proxy.

Rozwiązywanie problemów

  • Sprawdź, czy w instancji aplikacji są włączone powiadomienia. Jeśli użytkownik wyłączył Twojej aplikacji zgodę na wyświetlanie powiadomień, żadne powiadomienia nie zostaną opublikowane. Oznacza to, że wiadomości będą miały niższy priorytet. Przed wysłaniem wiadomości o wysokim priorytecie do instancji aplikacji sprawdź, czy powiadomienia są włączone.

  • Nie dzwoń do domu przed opublikowaniem powiadomienia. Ponieważ niewielka część użytkowników urządzeń mobilnych z Androidem korzysta z sieci o dużym opóźnieniu, unikaj nawiązywania połączenia ze swoimi serwerami, zanim wyświetlisz powiadomienie. Wywołanie serwera przed zakończeniem dozwolonego czasu przetwarzania może być ryzykowne dla użytkowników korzystających z sieci o dużym czasie oczekiwania. Zamiast tego umieść treść powiadomienia w wiadomości w FCM i wyświetl ją od razu. Jeśli chcesz synchronizować dodatkowe treści w aplikacjach na Androidzie, możesz zaplanować zadanie w WorkManageru, aby wykonało to zadanie w tle.