Tworzenie powiadomień o aktualizacjach na żywo

Aktualizacje na żywo zawierają podsumowanie ważnych aktualizacji, 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ć takie powiadomienie lub obniżyć jego priorytet do standardowego powiadomienia. Powiadomienia promowane są bardziej widoczne na powierzchniach systemowych, m.in. u góry obszaru powiadomień i na ekranie blokady oraz jako element na pasku stanu. Powiadomienia o aktualizacjach na żywo powinny być zgodne z zasadami dotyczącymi powiadomień, aby dostarczać krótkie, aktualne i istotne informacje.

Rysunek 1. Przykład powiadomienia dotyczącego aktualizacji na żywo.

Karty powiadomień o ofertach mają te cechy:

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

Aby powiadomienie mogło zostać uznane za aktualizację na żywo, musi spełniać te wymagania:

Cechy promocji

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

  • Notification.FLAG_PROMOTED_ONGOING wskazuje, czy powiadomienie jest promowane.
  • Notification.hasPromotableCharacteristics() sprawdza, czy system może promować powiadomienie. Ta metoda nie uwzględnia tego, czy użytkownik wyłączył aktualizacje na żywo dla aplikacji w ustawieniach.
  • NotificationManager.canPostPromotedNotifications() sprawdza, czy aplikacja może opublikować powiadomienie o ofercie, np. czy użytkownik włączył lub wyłączył tę opcję w ustawieniach.
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS to działanie intencji, które umożliwia aplikacjom przekierowywanie użytkowników do ustawień, aby mogli włączyć tę funkcję.

Kryteria wykorzystania

Używaj aktualizacji na żywo w przypadku działań, które trwają, są inicjowane przez użytkownika i wymagają szybkiej reakcji.

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

Trwa

Aktualizacja na żywo musi dotyczyć aktywności, 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 aktualizacji na żywo. Zamiast tego użyj standardowego powiadomienia. Dotyczy to również wydarzeń, które jeszcze się nie rozpoczęły, chociaż wydarzenia, które mają się rozpocząć, mogą korzystać z aktualizacji na żywo.

Aktualizacje na żywo dotyczą trwających aktywności. 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 połączenia telefoniczne, aktywne śledzenie przejazdów i aktywne śledzenie dostaw jedzenia.
  • Niewłaściwe 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 dotyczyć działań, które są wyraźnie wywoływane przez użytkownika, takich jak rozpoczęcie treningu, uruchomienie nawigacji samochodowej lub zamówienie przejazdu. Nie wyświetlaj w aktualizacji na żywo informacji o otoczeniu, takich jak informacje o środowisku użytkownika, jego zainteresowaniach czy nadchodzących wydarzeniach. Nie zezwalaj na generowanie aktualizacji na żywo przez działania wywoływane przez inne osoby.

Czasami użytkownik może wykonać działanie, które inicjuje aktywność na jakiś czas w przyszłości. Na przykład jeśli użytkownik kupi bilety na lot lub koncert, zarejestruje się na turniej lub w inny sposób wskaże, że weźmie udział w wydarzeniu, które ma określony termin. W takich przypadkach warto automatycznie wyświetlać aktualizację na żywo, gdy rozpocznie się zaplanowane wydarzenie. Aplikacje muszą jednak dostosować swoje aktywatory, aby pojawiały się tylko wtedy, gdy aktywność jest nieuchronna. Jeśli użytkownik wyraźnie zaznaczy, że chce zacząć monitorować wydarzenie w tle, np. mecz, możesz zacząć publikować aktualizacje na żywo dotyczące tego wydarzenia. W powiązanym powiadomieniu należy jednak uwzględnić działanie Odepnij.

Pilne

Wyświetlaj aktualizację na żywo tylko wtedy, gdy wymaga ona uwagi użytkownika przez cały czas trwania aktywności. Głównym zastosowaniem aktualizacji na żywo jest monitorowanie, gdy użytkownik odnosi znaczną korzyść z rzucenia okiem na aktualizację na żywo, aby śledzić zmieniający się stan aktywności.

Aktualizacje na żywo często sprawdzają się w przypadku aktywności, które przechodzą między aktualizacjami na żywo a normalnymi powiadomieniami. Na przykład wyświetlenie powiadomienia o karcie pokładowej jest odpowiednie na wiele godzin przed lotem użytkownika, ale powiadomienie powinno stać się aktualizacją na żywo tylko wtedy, gdy użytkownik ma pilną potrzebę, np. gdy dotrze na lotnisko lub do miejsca wydarzenia 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 stale jej monitorować.

Praktyki dotyczące UX

Użyj ikony śledzenia, aby zwizualizować stan. Można go aktualizować dynamicznie.

niestandardowy moduł śledzący na pasku postępu
Rysunek 3. Niestandardowa ikona lokalizatora.

Gdy szacowany czas dotarcia na miejsce jest obliczany lub nie jest jeszcze dostępny, nie pokazuj pustego stanu. Wyświetlaj aktywny tekst zastępczy, np. „Myślę…” lub „Zmieniam trasę…”, aby wskazać, że system działa, jak pokazano w przykładzie.

stan niepusty, aby pokazać, że model przetwarza dane
Rysunek 4. Stan aktualizacji na żywo nie może być pusty.

Elementy stanu

Elementy stanu umożliwiają użytkownikom śledzenie aktualizacji na żywo, gdy powiadomienie nie jest widoczne. Użyj setShortCriticalText lub setWhen, aby przekazać ważne informacje o stanie powiadomienia dotyczącego postępu.

element stanu z ikoną
Rysunek 5. Stan nieokreślony wyświetla małą ikonę Notification.Builder#setSmallIcon.
element stanu z czasem
Rysunek 6. Użyj Notification.Builder#setShortCriticalText, aby wyświetlić czas bezwzględny.
element stanu z informacjami
Rysunek 7. Używaj Notification.Builder#setShortCriticalText do przekazywania ważnych informacji.

Kiedy

Czas wyzwala odliczanie czasu trwania powiadomienia, chyba że powiadomienie zostanie zamknięte lub zaktualizowane. Poniżej opisujemy, jak działa czas „kiedy” w różnych sytuacjach:

  • Czas jest ustawiony na co najmniej 2 minuty w przyszłości: jeśli aktualna godzina to 10:05, a czas jest ustawiony na 10:10, element pokazuje 5 min.
  • Jeśli czas jest w przeszłości: tekst nie jest wyświetlany.
  • Gdy używasz chronometru, na elemencie może być wyświetlany minutnik. Zobacz setUsesChronometer i setChronometerCountdown. Stoper jest wyświetlany w elemencie, dopóki jego wartość jest dodatnia.
  • Jeśli nie chcesz, aby w powiadomieniu wyświetlała się godzina, użyj metody setShowWhen, aby ustawić wartość FALSE.

Wygląd elementu stanu

Element stanu zawsze zawiera ikonę i opcjonalnie tekst. Maksymalna szerokość elementu to 96 dp. Tekst będzie widoczny tylko wtedy, gdy cały zmieści się w elemencie. Tekst wyświetla się w zależności od tych kryteriów:

  • Jeśli jest 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świetli się więcej niż 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. Wskazówki dotyczące tego mostkowania oraz tworzenia 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?

koniec wskaźnika wizualizacji ułatwień dostępu dotyczących 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 koniec paska postępu.

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

Odpowiedź: powiadomienia niestandardowe utrudniają spójne testowanie i zapewnianie wygody użytkownikom, ponieważ ich działanie różni się znacznie w zależności od wersji Androida i producenta urządzenia. Unikaj powiadomień niestandardowych, które używają RemoteViews.