Tworzenie powiadomienia o aktualizacji na żywo

System promuje powiadomienia o aktualizacjach na żywo. Promowane powiadomienia są bardziej widoczne w systemie, m.in. u góry panelu powiadomień i ekranu blokady oraz jako element na pasku stanu.

Rysunek 1. Przykład powiadomienia o aktualizacji na żywo.

Karty promowanych powiadomień mają te cechy:

  • Domyślnie rozwinięte
  • Nie można go zwinąć

Aby powiadomienie kwalifikowało się jako aktualizacja na żywo, musi spełniać te wymagania:

  • Musi to być Standardowy/Bez stylu, BigTextStyle, CallStyle lub ProgressStyle.
  • W pliku manifestu Androida musisz poprosić o to uprawnienie inne niż uprawnienie w czasie działania:android.permission.POST_PROMOTED_NOTIFICATIONS
  • Musisz poprosić o promocję, korzystając z EXTRA_REQUEST_PROMOTED_ONGOING lub NotificationCompat.Builder#requestPromotedOngoing.
  • Musi to być ongoing (ustaw FLAG_ONGOING_EVENT).
  • Musi mieć ustawioną wartość contentTitle.
  • Nie może zawierać żadnych ustawionych wartości customContentView (bez RemoteViews).
  • Nie może to być podsumowanie grupy korzystającej z funkcji setGroupSummary.
  • Musi NIE setColorized do TRUE.
  • Kanał powiadomień NIE może mieć wartości IMPORTANCE_MIN.

Cechy promocji

Te interfejsy API pomagają określić, czy system będzie promować Twoje powiadomienie:

  • Notification.FLAG_PROMOTED_ONGOING wskazuje, czy powiadomienie jest promowane.
  • Notification.hasPromotableCharacteristics() sprawdza, czy system może zmienić ważność powiadomienia na wyższą. Ta metoda nie uwzględnia, czy użytkownik wyłączył w ustawieniach aktualizacje na żywo dla aplikacji.
  • NotificationManager.canPostPromotedNotifications() sprawdza, czy aplikacja może wysyłać powiadomienia promocyjne, np. czy użytkownik włączył lub wyłączył je w ustawieniach.
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS to działanie intencji, które umożliwia aplikacjom przekierowywanie użytkowników do Ustawień w celu włączenia tej funkcji.

Kryteria wykorzystania

Używaj aktualizacji na żywo w przypadku działań, które są w toku, zainicjowane przez użytkownika i wrażliwe na czas.

W toku

Aktualizacja na żywo musi przedstawiać aktywność, która jest w toku i ma wyraźny początek i koniec. Jeśli aktywność miała miejsce w przeszłości, nie używaj funkcji LiveUpdate. Zamiast tego użyj standardowego powiadomienia. Dotyczy to również wydarzeń, które jeszcze się nie rozpoczęły, chociaż w przypadku wydarzeń, które mają się rozpocząć, można użyć funkcji Aktualizacja na żywo.

Aktualizacje na żywo przedstawiają bieżące działania. Nie używaj aktualizacji na żywo, aby oferować przyspieszony dostęp do funkcji aplikacji. Jeśli chcesz to zrobić, użyj widżetu aplikacji lub niestandardowego kafelka Szybkich ustawień.

  • Odpowiednie zastosowania: aktywna nawigacja, trwające rozmowy telefoniczne, aktywne śledzenie przejazdów i aktywne śledzenie dostawy jedzenia.
  • Nieodpowiednie zastosowania: reklamy, promocje, wiadomości na czacie, alerty, nadchodzące wydarzenia w kalendarzu i szybki dostęp do funkcji aplikacji.

Inicjowane przez użytkownika

Większość aktualizacji na żywo powinna odzwierciedlać działania, które są wyraźnie wywoływane przez użytkownika, takie jak rozpoczęcie treningu, włączenie nawigacji samochodowej lub wezwanie taksówki. Nie wyświetlaj w aktualizacji na żywo informacji o otoczeniu użytkownika, jego zainteresowaniach ani nadchodzących wydarzeniach. Nie zezwalaj na generowanie aktualizacji na żywo przez działania wywołane przez inne podmioty.

Czasami użytkownik może wykonać działanie, które zainicjuje aktywność w przyszłości. Na przykład gdy użytkownik kupi bilety na lot lub koncert, zarejestruje się na turniej lub w inny sposób zadeklaruje, że weźmie udział w wydarzeniu, które odbędzie się w określonym terminie. W takich przypadkach warto automatycznie wyświetlać aktualizację na żywo po rozpoczęciu zaplanowanego wydarzenia. Aplikacje muszą jednak dostosować swoje wyzwalacze, aby pojawiały się tylko wtedy, gdy aktywność jest nieuchronna. Jeśli użytkownik wyraźnie wskaże, że chce rozpocząć monitorowanie zdarzenia w tle, np. meczu sportowego, możesz zacząć publikować aktualizacje na żywo dotyczące tego wydarzenia. W powiązanym powiadomieniu powinna się jednak znajdować też opcja Odpięcie.

Wymagające szybkiej reakcji

Wyświetlaj aktualizację na żywo tylko wtedy, gdy wymaga ona uwagi użytkownika przez cały czas trwania aktywności. Kluczowym zastosowaniem aktywnych aktualizacji jest monitorowanie, gdy użytkownik uzyskuje znaczną korzyść z szybkiego sprawdzenia aktywnej aktualizacji, aby śledzić zmieniający się stan aktywności.

Aktualizacja na żywo jest często odpowiednia w przypadku działań, które przechodzą między aktualizacjami na żywo a normalnymi powiadomieniami. Na przykład powiadomienie z kartą pokładową można wyświetlać na wiele godzin przed lotem użytkownika, ale powinno ono stać się aktualizacją na żywo dopiero wtedy, gdy użytkownik ma pilną potrzebę, np. gdy dotrze na lotnisko lub do miejsca docelowego albo gdy rozpocznie się wejście na pokład. Z kolei aktualizacja na żywo nie jest odpowiednia do śledzenia przesyłki, ponieważ użytkownik nie musi jej stale monitorować.

Elementy stanu

Powiadomienia o stanie umożliwiają użytkownikom śledzenie informacji na żywo, gdy powiadomienie nie jest widoczne. Używaj symboli setShortCriticalText lub setWhen, aby przekazywać ważne informacje o stanie powiadomienia opartego na postępach.

element stanu z ikoną,
Rysunek 2. Stan nieokreślony jest oznaczony małą ikoną Notification.Builder#setSmallIcon.
element stanu z czasem,
Rysunek 3. Użyj Notification.Builder#setShortCriticalText, aby wyświetlić czas bezwzględny.
element stanu z informacjami,
Rysunek 4. Używaj Notification.Builder#setShortCriticalText, aby przekazywać ważne informacje.

Gdy czas

Gdy czas wyzwalający zostanie osiągnięty, rozpocznie się odliczanie czasu wyświetlania powiadomienia, chyba że zostanie ono zamknięte lub zaktualizowane.

  • Gdy czas jest co najmniej 2 minuty w przyszłości: jeśli bieżąca godzina to 10:05, a czas ustawiony to 10:10, na elemencie pojawi się napis „5 min”.
  • Jeśli czas jest starszy niż 1 minuta, powiadomienie nie jest wyświetlane.
  • Użyj setShowWhen, aby FALSE, jeśli nie chcesz, aby powiadomienie wyświetlane w panelu miało godzinę.

Wygląd elementu stanu

Chip stanu zawsze zawiera ikonę, a opcjonalnie także tekst. Element ma maksymalną szerokość 96 dp. Wyświetl tekst w zależności od tych kryteriów:

  • Jeśli tekst ma mniej niż 7 znaków, wyświetl cały tekst.
  • Jeśli wyświetli się mniej niż połowa tekstu, pokaż tylko ikonę.
  • Jeśli wyświetlana będzie ponad połowa tekstu, pokaż jak najwięcej tekstu.

Zamknięcie

Użytkownicy mogą kontrolować widoczność powiadomień w panelu powiadomień. Publikowanie niechcianych aktualizacji na żywo może spowodować, że użytkownicy cofną uprawnienia aplikacji do publikowania.

Aby uniemożliwić użytkownikom całkowite wyłączenie aktualizacji na żywo, unikaj publikowania aktualizacji, które użytkownicy mogą odrzucić. Nie publikuj ponownie aktualizacji na żywo, które użytkownik odrzucił. Użyj narzędzia setDeleteIntent, aby wykryć odrzucone aktualizacje.

Aby wypróbować te interfejsy API, zapoznaj się z przykładową aplikacją.