Ustawianie priorytetu wiadomości i zarządzanie nim

Na Androidzie masz 2 opcje przypisywania priorytetu dostarczania wiadomości następnych: normalny i wysoki priorytet. Dostarczanie wiadomości o normalnym i wysokim priorytecie działa w ten sposób:

  • Normalny priorytet. Jest to domyślny priorytet dla wiadomości danych. Wiadomości o normalnym priorytecie są dostarczane natychmiast, gdy urządzenie nie jest w stanie uśpienia. Gdy urządzenie jest w trybie Doze, przesyłanie może zostać opóźnione, aby oszczędzać baterię, dopóki urządzenie nie wyjdzie z trybu Doze. W przypadku wiadomości, które nie są tak pilne, np. powiadomień o nowych e-mailach, synchronizacji interfejsu lub synchronizacji danych aplikacji w tle, wybierz normalny priorytet przesyłania.

    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 podejmuje natychmiastowe próby dostarczenia wiadomości o wysokim priorytecie, dzięki czemu FCM może w razie potrzeby wybudzić urządzenie uśpiające i obsługiwać w ograniczonym zakresie przetwarzanie (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 i obniżanie priorytetu wiadomości na Androidzie

Wiadomości o wysokim priorytecie na Androidzie są przeznaczone do wyświetlania użytkownikowi treści, które są ważne i pilne. Powinny one być wyświetlane w postaci powiadomień. Jeśli FCMwykrywa wzór, w którym wiadomości nie powodują wyświetlania powiadomień dla użytkownika, wiadomości mogą zostać przekierowane do obsługi przez usługi Google Play.

FCM używa 7 dni zachowania wiadomości, aby określić, czy ma obniżyć priorytet wiadomości, czy przekierować je; określa to 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 wpłynie to na przyszłe wiadomości o wysokim priorytecie.

Delegowanie powiadomień w Usługach Google Play

Wiadomości o wysokim priorytecie (nie dane) spełniające określone kryteria są przekierowywane przez usługi Google Play zamiast być odprawiane. 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 dane analityczne dotyczące powiadomień pośredniczących mogły być raportowane, aplikacja musi używać pakietu FCM SDK 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 otwarcia aplikacji.

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

Zalecamy pozostawienie włączonej funkcji delegowania, ponieważ przynosi to korzyści dla baterii i pamięci urządzenia. Możesz jednak zrezygnować z tej funkcji w jeden z tych sposobów:

  • Na poziomie aplikacji: dodaj w pliku manifestu aplikacji 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.
  • Na poziomie wiadomości: w obiekcie AndroidNotification żądania wysyłania ustaw klucz proxy na DENY.

Pomiar odsunięcia wiadomości na dalszy plan w Androidzie

  • Pojedyncze wiadomości. Podczas dostarczania wiadomości możesz określić, czy została ona pozbawiona priorytetu, porównując priorytet dostarczonej wiadomości zwracany przez metodę getPriority() z oryginalnym priorytetem zwracanym przez metodę getOriginalPriority().

  • Wszystkie wiadomości. Interfejs FCM Aggregate Delivery Data API może podać, jaki odsetek wszystkich wiadomości wysyłanych na urządzenia z Androidem jest przesyłany z niższym priorytetem. Niektóre wiadomości mogą nie być uwzględniane w raportach danych zbiorczych, ale ogólnie powinny one dawać ogólny obraz współczynników depriorytetyzacji wiadomości. Więcej informacji i przykładowy kod do wysyłania zapytań do interfejsu API znajdziesz w artykule o zbiorczym dostarczaniu danych. Możesz go też przejrzeć w eksploratorze interfejsów API.

  • Powiadomienia w zastępstwie Powiadomienia przekazywane przez serwer proxy nie będą uwzględniane w bieżących danych o dostarczaniu powiadomień w FCM ani GA, więc możesz zauważyć spadek tych danych o dostarczanie powiadomień o do 15%. Aby tworzyć raporty dotyczące wiadomości przesyłanych przez serwer proxy, użyj interfejsu FCM Aggregate Delivery Data API. ProxyNotificationInsightPercents zawiera informacje o procentowym udziale powiadomień, które zostały pomyślnie przekierowane, oraz szczegóły dotyczące wiadomości, których nie udało się przekierować.

Rozwiązywanie problemów

  • Sprawdź, czy w instancji aplikacji są włączone powiadomienia. Jeśli użytkownik wyłączy uprawnienia do wysyłania powiadomień w Twojej aplikacji, żadne powiadomienia nie zostaną opublikowane, a Twoje wiadomości zostaną zdepriorytetyzowane. 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 aplikacji mobilnych na Androida korzysta z sieci o wysokiej latencji, nie otwieraj połączenia z serwerami przed wyświetleniem powiadomienia. 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 dodaj treść powiadomienia do wiadomości FCM i wyświetl ją natychmiast. Jeśli chcesz zsynchronizować dodatkowe treści w aplikacji na Androidzie, możesz zaplanować zadanie w usłudze WorkManager, aby wykonało to zadanie w tle.