Tworzenie powiadomień o aktualizacjach na żywo

Aktualizacje na żywo zawierają podsumowanie ważnych informacji, dzięki czemu użytkownicy mogą śledzić postępy bez otwierania aplikacji. System promuje powiadomienia o aktualizacjach na żywo, ale użytkownicy mogą tymczasowo odrzucić lub obniżyć ich priorytet, aby stały się standardowymi powiadomieniami. Promowane powiadomienia są bardziej widoczne w systemie, m.in. u góry panelu powiadomień i na ekranie blokady oraz jako element na pasku stanu. Powiadomienia o aktualizacjach na żywo powinny być zgodne z zasadami powiadomień, które mówią o przekazywaniu krótkich, aktualnych i istotnych informacji.

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

Karty promowanych powiadomień mają te cechy:

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

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

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 aktywności, które są w toku, zostały zainicjowane przez użytkownika i są wrażliwe na czas.

Rysunek 2. Aktualizacja na żywo na ekranie głównym i ekranie blokady oraz w postaci elementu.

Trwa

Aktualizacja na żywo musi odzwierciedlać aktywność, która jest w trakcie realizacji, i mieć wyraźny początek i koniec. Jeśli aktywność miała miejsce w przeszłości, nie używaj funkcji Live Update. 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 Live Update.

Aktualizacje na żywo to 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 tak, aby pojawiały się tylko wtedy, gdy aktywność jest nieuchronna. Jeśli użytkownik wyraźnie wskaże, że chce rozpocząć monitorowanie wydarzenia w tle, np. meczu sportowego, możesz zacząć publikować aktualizacje na żywo dotyczące tego wydarzenia. W powiązanym powiadomieniu warto jednak umieścić też działanie Odepnij.

Pilne

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 może szybko sprawdzić aktywną aktualizację, 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ć.

Praktyki związane z UX

Aby zobaczyć stan, użyj ikony trackera. Można ją aktualizować dynamicznie.

niestandardowy tracker na pasku postępu,
Rysunek 3. niestandardową ikonę urządzenia śledzącego
,

Gdy szacowany czas przyjazdu jest obliczany lub jeszcze niedostępny, nie wyświetlaj pustego stanu. Podaj aktywny tekst zastępczy, np. „Myślenie…” lub „Zmiana trasy…”, aby wskazać, że system działa, jak pokazano w przykładzie.

stan niepusty, który sygnalizuje, że trwa przetwarzanie;
Rysunek 4. Niepusty stan aktualizacji na żywo.

Elementy stanu

Powiadomienia o stanie umożliwiają użytkownikom śledzenie aktualizacji 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 5. Stan nieokreślony jest oznaczony małą ikoną Notification.Builder#setSmallIcon.
element stanu z godziną,
Rysunek 6. Użyj Notification.Builder#setShortCriticalText, aby wyświetlić czas bezwzględny.
element stanu z informacjami,
Rysunek 7. Używaj Notification.Builder#setShortCriticalText, aby przekazywać ważne informacje.

Gdy czas

Gdy czas wygaśnięcia zostanie osiągnięty, rozpocznie się odliczanie czasu wyświetlania powiadomienia, chyba że zostanie ono zamknięte lub zaktualizowane. Poniżej znajdziesz opis tego, jak czas działa w różnych sytuacjach:

  • Gdy czas jest co najmniej 2 minuty w przyszłości: jeśli aktualna godzina to 10:05, a czas jest ustawiony na 10:10, na elemencie pojawi się napis 5 min.
  • Gdy czas jest w przeszłości: tekst nie jest wyświetlany.
  • Podczas korzystania z chronometru może być wyświetlany timer w układzie. Zobacz setUsesChronometersetChronometerCountdown. Minutnik jest wyświetlany w elemencie, dopóki jego wartość jest dodatnia.
  • Nie chcesz, aby czas był wyświetlany w powiadomieniu: użyj setShowWhen, aby FALSE.

Wygląd elementu stanu

Chip stanu zawsze zawiera ikonę, a opcjonalnie także tekst. Element ma maksymalną szerokość 96 dp. Tekst będzie widoczny tylko wtedy, gdy cały zmieści się w karcie. Tekst jest wyświetlany 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.

Wear OS

Aktualizacje na żywo są przekazywane na niektóre połączone urządzenia z Wear OS. Więcej informacji o tym mechanizmie udostępniania powiadomień oraz o tworzeniu lokalnych aktualizacji na żywo na Wear OS znajdziesz w przewodniku po aktualizacjach na żywo na Wear OS.

Zamknięcie

Użytkownicy mogą kontrolować widoczność powiadomień w obszarze 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 poeksperymentować z tymi interfejsami API, zapoznaj się z przykładową aplikacją.

Najczęstsze pytania

Pytanie: co oznacza biała kropka na końcu paska postępu?

wskaźnik wizualizacji ułatwień dostępu na końcu postępu,
Rysunek 8. Wizualizacja ułatwień dostępu na końcu podróży

Odpowiedź: biała kropka na końcu paska postępu wizualnie oznacza jego koniec.

Pytanie: dlaczego w przypadku aktualizacji na żywo nie są obsługiwane powiadomienia niestandardowe?

Odpowiedź: niestandardowe powiadomienia utrudniają przeprowadzanie spójnych testów i ocenę UX, ponieważ ich działanie znacznie różni się w zależności od wersji Androida i producenta urządzenia. Unikaj niestandardowych powiadomień z użyciem RemoteViews.