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ć takie powiadomienie lub obniżyć jego rangę do standardowego powiadomienia. Promowane powiadomienia są wyświetlane w bardziej widocznym miejscu 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 dotyczącymi powiadomień, aby przekazywać krótkie, aktualne i istotne informacje.

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

Karty promowanych powiadomień mają te cechy:

  • Domyślnie rozwinięte
  • Nie można ich 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 promować powiadomienie. Ta metoda nie uwzględnia, czy użytkownik wyłączył aktualizacje na żywo w ustawieniach aplikacji.
  • NotificationManager.canPostPromotedNotifications() sprawdza, czy Twoja aplikacja może wysyłać promowane powiadomienia, 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 włączyli tę funkcję.

Kryteria użytkowania

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

Rysunek 2. Aktualizacja na żywo na ekranie głównym i ekranie blokady oraz jako element.

Trwa

Aktualizacja na żywo musi reprezentować działanie, które jest aktywnie w toku i ma wyraźny początek i koniec. Jeśli działanie miało 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ż w przypadku wydarzeń, które mają się rozpocząć, można użyć aktualizacji na żywo.

Aktualizacje na żywo reprezentują działania w toku. 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, rozmowy telefoniczne w toku, aktywne śledzenie przejazdu 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 reprezentować działania, które są wyraźnie wywoływane przez użytkownika, np. rozpoczęcie treningu, włączenie nawigacji samochodowej lub zamówienie przejazdu. 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ływane przez inne osoby.

Czasami użytkownik może wykonać działanie, które rozpocznie działanie 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 będzie uczestniczyć w wydarzeniu, które wymaga szybkiego działania. W takich przypadkach może być odpowiednie automatyczne wyświetlenie aktualizacji na żywo po rozpoczęciu zaplanowanego wydarzenia. Aplikacje muszą jednak dostosować swoje wyzwalacze tak, aby pojawiały się tylko wtedy, gdy działanie jest bliskie. 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 należy jednak dodać działanie Odepnij.

Wymaga szybkiego działania

Wyświetlaj aktualizację na żywo tylko wtedy, gdy wymaga ona uwagi użytkownika przez cały czas trwania działania. Głównym przypadkiem użycia aktualizacji na żywo jest monitorowanie, gdy użytkownik może szybko sprawdzić aktualizację na żywo, aby śledzić zmieniający się stan działania.

Aktualizacja na żywo jest często odpowiednia w przypadku działań, które przechodzą między aktualizacjami na żywo a zwykłymi 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 dopiero 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 jej stale monitorować.

Sprawdzone metody dotyczące wrażeń użytkowników

Aby wizualizować stan, użyj ikony śledzenia. Można ją dynamicznie aktualizować.

niestandardowy tracker na pasku postępu,
Rysunek 3. Niestandardowa ikona śledzenia.

Gdy szacowany czas dotarcia jest obliczany lub jeszcze niedostępny, nie wyświetlaj pustego stanu. Aby wskazać, że system działa, użyj aktywnego tekstu zastępczego, np. „Myślenie…” lub „Zmiana trasy…”, jak pokazano w przykładzie.

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

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ępów.

element stanu z ikoną,
Rysunek 5. Stan nieokreślony wyświetla 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żyj Notification.Builder#setShortCriticalText, aby przekazać ważne informacje.

Kiedy

Czas „kiedy” uruchamia odliczanie czasu trwania powiadomienia, chyba że powiadomienie zostanie odrzucone lub zaktualizowane. Poniższe punkty opisują, jak działa czas „kiedy” w różnych sytuacjach:

  • Czas „kiedy” jest co najmniej 2 minuty w przyszłości: jeśli bieżąca godzina to 10:05, a czas „kiedy” jest ustawiony na 10:10, element wyświetla 5 min.
  • Czas „kiedy” jest w przeszłości: tekst nie jest wyświetlany.
  • Gdy używasz chronometru jako czasu „kiedy”, w elemencie może być wyświetlany licznik czasu. Zobacz setUsesChronometer i setChronometerCountdown. Licznik czasu chronometru jest wyświetlany w elemencie, dopóki jego wartość jest dodatnia.
  • Nie chcesz, aby czas „kiedy” był wyświetlany w powiadomieniu: użyj setShowWhen do FALSE.

Wygląd elementu stanu

Element stanu zawsze zawiera ikonę, a opcjonalnie także tekst. Maksymalna szerokość elementu to 96 dp. Tekst będzie wyświetlany tylko wtedy, gdy cały tekst zmieści się w elemencie. 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, wyświetl tylko ikonę.
  • Jeśli wyświetli się więcej niż połowa tekstu, wyświetl jak najwięcej tekstu.

Zamknięcie

Użytkownicy mogą kontrolować widoczność powiadomień w obszarze powiadomień. Wysyłanie niechcianych aktualizacji na żywo może spowodować, że użytkownicy cofną uprawnienia aplikacji do wysyłania powiadomień.

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ł. Aby wykrywać odrzucone aktualizacje, użyj setDeleteIntent.

Aby eksperymentować z tymi interfejsami API, zapoznaj się z przykładową aplikacją.

Najczęstsze pytania

Pytanie: co to jest 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 koniec paska postępu.

Pytanie: dlaczego aktualizacje na żywo nie obsługują powiadomień niestandardowych?

Odpowiedź: powiadomienia niestandardowe utrudniają spójne testowanie i wrażenia użytkowników, ponieważ ich działanie znacznie różni się w zależności od wersji Androida i producenta urządzenia. Unikaj powiadomień niestandardowych korzystających z RemoteViews.