Ustawianie priorytetu wiadomości i zarządzanie nim

Na Androidzie masz 2 opcje przypisywania priorytetu dostarczania wiadomości do aplikacji podrzędnych: normalny i wysoki. Dostarczanie wiadomości o normalnym i wysokim priorytecie działa tak:

  • Normalny priorytet Jest to domyślny priorytet wiadomości z danymi i powiadomień. Wiadomości o normalnym priorytecie są dostarczane natychmiast, gdy urządzenie nie jest w trybie uśpienia. Gdy urządzenie jest w trybie uśpienia, dostarczanie może być opóźnione, aby oszczędzać baterię, dopóki urządzenie nie wyjdzie z tego trybu. W przypadku mniej pilnych wiadomości, takich jak powiadomienia o nowych e-mailach, synchronizacja interfejsu czy synchronizacja danych aplikacji w tle, wybierz normalny priorytet dostawy.

  • Wysoki priorytetFCM – próbuje natychmiast dostarczyć wiadomości o wysokim priorytecie, co pozwala FCM wybudzić uśpione urządzenie w razie potrzeby i przeprowadzić ograniczone przetwarzanie (w tym bardzo ograniczony dostęp do sieci). Wiadomości o wysokim priorytecie powinny zwykle prowadzić do interakcji użytkownika z aplikacją lub jej powiadomieniami.

Decydowanie o priorytecie wiadomości

Wiadomości o normalnym priorytecie nadają się do ogólnych aktualizacji, ale w przypadku pilnych spraw lub działań wybierz wysoki priorytet, aby mieć pewność, że zostaną one natychmiast dostarczone. Czas dostarczania wiadomości o normalnym priorytecie może zależeć od trybu uśpienia, dlatego ustawienie większości powiadomień widocznych dla użytkownika jako powiadomień o wysokim priorytecie zapewni ich szybkie dostarczanie. Na przykład powiadomienia takie jak wiadomości na czacie, problemy z kontem czy aktualizacje dotyczące dostawy jedzenia powinny mieć wysoki priorytet.

Przetwarzanie wiadomości o wysokim i normalnym priorytecie

W przypadku powiadomień o wysokim i normalnym priorytecie otrzymywanych na urządzeniu z Androidem na przetworzenie ładunku wiadomości w onMessageReceived handlerze jest kilka sekund. W przypadku powiadomień wymagających asynchronicznego przetwarzania ładunku wiadomości zalecamy użycie konstrukcji takiej jak WorkManager, ponieważ może to przekroczyć czas przyznany onMessageReceived procedurze obsługi.

W przypadku wiadomości o wysokim priorytecie możesz zaplanować przyspieszone zadanie za pomocą Android WorkManager, aby mieć pewność, że te powiadomienia będą traktowane priorytetowo i zostaną wykonane do końca.

W przypadku wiadomości o normalnym priorytecie możesz zaplanować zwykłe żądanie OneTimeWorkRequest za pomocą Android WorkManager. Dzięki temu dodatkowe wymagane prace zostaną wykonane bez użycia przetwarzania priorytetowego.

Określanie priorytetów wiadomości

Powiadomienia możesz wysyłać do użytkowników za pomocą Admin SDK, interfejsu API REST FCM i konsoli Firebase. Aby zmienić ustawienie priorytetu z Admin SDK i interfejsu FCM REST API, musisz zaktualizować ładunek JSON wiadomości. Aby dowiedzieć się, jak ustawić wysoki priorytet, możesz użyć tego przykładowego kodu. W przypadku powiadomień wysyłanych z konsoli ustawianie pól powiadomień specyficznych dla Androida nie jest obsługiwane.

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

Testowanie powiadomień o wysokim priorytecie w trybie uśpienia

Aby mieć pewność, że powiadomienia o wysokim priorytecie są odbierane i przetwarzane prawidłowo, gdy użytkownik je otrzyma, wykonaj te instrukcje, aby przetestować powiadomienia:

  1. Ustaw urządzenie w trybie uśpienia zgodnie z instrukcjami w artykule Testowanie aplikacji w trybie uśpienia.
  2. Uzyskaj dostęp do tokena rejestracji FCM z aplikacji na urządzeniu testowym. Więcej informacji o tym, jak uzyskać dostęp do tokena, znajdziesz w artykule Wysyłanie wiadomości testowej do aplikacji działającej w tle.
  3. Gdy uzyskasz token FCM, wyślij powiadomienie o wysokim priorytecie na urządzenie testowe, używając kodu wysyłania powiadomień FCM lub polecenia cURL%3B%0A%7D)-,cURL,-curl%20%2DX) z parametrami konfiguracji pasującymi do powiadomienia o wysokim priorytecie.

Obniżanie priorytetu powiadomień o wysokim priorytecie FCM na Androidzie

Wiadomości o wysokim priorytecie na Androidzie są przeznaczone dla treści, które wymagają natychmiastowej uwagi użytkownika i powinny powodować wyświetlanie powiadomień. Jeśli FCM wykryje wzorzec, w którym wiadomości nie powodują wyświetlania powiadomień użytkownikom, może obniżyć priorytet Twoich wiadomości do normalnego lub przekazać ich obsługę do usług Google Play.

FCM wykorzystuje 7 dni zachowań związanych z wiadomościami, aby określić, czy obniżyć priorytet wiadomości lub przekierować je przez serwer proxy. Decyzję tę podejmuje niezależnie dla każdej instancji 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 Twoje przyszłe wiadomości o wysokim priorytecie.

Przekazywanie powiadomień za pomocą Usług Google Play

Powiadomienia o wysokim priorytecie, które spełniają określone kryteria, są przekazywane przez Usługi Google Play zamiast być traktowane jako mniej ważne. Oznacza to, że powiadomienia są wyświetlane przez usługi Google Play w imieniu aplikacji bez konieczności jej uruchamiania. Ma to na celu poprawę ogólnych wrażeń użytkowników urządzeń z Androidem.

Pamiętaj, że wiadomości z powiadomieniami przekazywanymi przez serwer proxy wprowadzają zmiany w sposobie raportowania danych analitycznych związanych z otrzymywaniem wiadomości:

  • Aby można było raportować dane analityczne dotyczące powiadomień przekazywanych przez serwer proxy, aplikacja musi korzystać z pakietu FCM SDK w wersji 24.0.0 lub nowszej.
  • Możesz zauważyć opóźnienia lub spadek liczby otrzymywanych wiadomości w porównaniu z liczbą sprzed wprowadzenia powiadomień proxy. Dzieje się tak, ponieważ dane analityczne dotyczące powiadomień przekazywanych przez serwer proxy są raportowane dopiero po uruchomieniu aplikacji i mogą nie być raportowane wcale, jeśli powiadomienie nie spowoduje otwarcia aplikacji.

Przekazywanie wiadomości z powiadomieniami w ten sposób jest domyślnym działaniem 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ą 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.

Chociaż zdecydowanie zalecamy pozostawienie delegowania włączonego ze względu na korzyści dla baterii i pamięci urządzenia, możesz zrezygnować z tego zachowania w jeden z tych sposobów:

  • Na poziomie aplikacji: w pliku manifestu aplikacji dodaj dyrektywę <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • W przypadku instancji aplikacji: w przypadku instancji aplikacji ustaw fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> w przepływie interfejsu aplikacji w zależności od konkretnego przypadku użycia.
  • W przypadku poszczególnych wiadomości: w obiekcie AndroidNotification w żądaniu wysłania ustaw klucz proxy na DENY.

Pomiar obniżania priorytetu wiadomości na Androidzie

  • Wiadomości indywidualne Po dostarczeniu możesz sprawdzić, czy dana wiadomość została obniżona w hierarchii ważności, porównując jej priorytet dostarczenia uzyskany za pomocą metody getPriority() z jej pierwotnym priorytetem uzyskanym za pomocą metody getOriginalPriority().

  • Wszystkie wiadomości. FCMInterfejs Aggregate Delivery Data API może raportować, jaki odsetek wszystkich wiadomości wysyłanych na urządzenia z Androidem jest traktowany priorytetowo. Niektóre wiadomości mogą być pomijane w raportach z zagregowanymi danymi, ale ogólnie powinny one dawać globalny obraz współczynników obniżania priorytetu wiadomości. Więcej informacji i przykładowy kod do wysyłania zapytań do interfejsu API znajdziesz w artykule o zagregowanych danych o dostawie. Możesz też zapoznać się z nim w eksploratorze interfejsu API.

  • Powiadomienia w zastępstwie Powiadomienia przekazywane przez serwer proxy nie będą uwzględniane w bieżących danych FCM ani GA, więc możesz zauważyć spadek danych o dostarczaniu powiadomień nawet o 15%. Do raportowania o wiadomościach przekazywanych przez serwer proxy używaj FCM interfejsu Aggregate Delivery Data API. ProxyNotificationInsightPercents zawiera odsetek powiadomień, które zostały pomyślnie przekazane przez serwer proxy, a także szczegółowe informacje o wiadomościach, których nie można przekazać przez serwer proxy.

Rozwiązywanie problemów z opóźnieniami powiadomień

  • Sprawdź, czy w instancji aplikacji są włączone powiadomienia. Jeśli użytkownik wyłączył uprawnienia do powiadomień w przypadku Twojej aplikacji, żadne powiadomienia nie będą publikowane, a w rezultacie Twoje wiadomości będą miały niższy priorytet. Zanim wyślesz wiadomości o wysokim priorytecie do instancji aplikacji, sprawdź, czy powiadomienia są włączone.

  • Unikaj wykonywania dodatkowych połączeń sieciowych podczas przetwarzania powiadomienia. Ponieważ niewielka część użytkowników urządzeń mobilnych z Androidem korzysta z sieci o dużych opóźnieniach, unikaj otwierania połączenia z serwerami przed wyświetleniem powiadomienia. Wywoływanie serwera przed upływem dozwolonego czasu przetwarzania może być ryzykowne dla użytkowników w sieciach o dużym opóźnieniu.

    Zamiast tego umieść treść powiadomienia w wiadomości FCM i wyświetl ją od razu. Jeśli chcesz zsynchronizować dodatkowe treści w aplikacji na Androidzie, możesz zaplanować zadanie za pomocą WorkManagera, aby wykonać je w tle.