Informacje o powiadomieniach

Powiadomienie to wiadomość, którą Android wyświetla poza interfejsem aplikacji, aby przypominać użytkownikowi o czymś, informować go o komunikacji z innymi osobami lub przekazywać inne aktualne informacje z aplikacji. Użytkownicy mogą kliknąć powiadomienie, aby otworzyć aplikację lub wykonać działanie bezpośrednio z poziomu powiadomienia.

Na tej stronie znajdziesz omówienie miejsc, w których pojawiają się powiadomienia, oraz dostępnych funkcji. Aby rozpocząć tworzenie powiadomień, przeczytaj artykuł Tworzenie powiadomienia.

Więcej informacji o projektowaniu powiadomień i wzorcach interakcji znajdziesz w przewodniku po projektowaniu powiadomień.

Wyświetlenia na urządzeniu

Powiadomienia automatycznie wyświetlają się użytkownikom w różnych lokalizacjach i formatach. Powiadomienie pojawia się jako ikona na pasku stanu, bardziej szczegółowy wpis w panelu powiadomień i plakietka na ikonie aplikacji. Powiadomienia pojawiają się też na sparowanych urządzeniach do noszenia.

Pasek stanu i panel powiadomień

Gdy wyślesz powiadomienie, najpierw pojawi się ono jako ikona na pasku stanu.

Rysunek 1. Ikony powiadomień pojawiają się po lewej stronie paska stanu.

Użytkownicy mogą przesunąć palcem w dół na pasku stanu, aby otworzyć panel powiadomień, w którym mogą wyświetlić więcej szczegółów i wykonać działania związane z powiadomieniem.

Rysunek 2.  Powiadomienia w obszarze powiadomień.

Użytkownicy mogą przeciągnąć powiadomienie w panelu w dół, aby wyświetlić widok rozwinięty, który zawiera dodatkowe treści i przyciski działań (jeśli są dostępne). Od Androida 13 ten rozszerzony widok zawiera przycisk, który umożliwia użytkownikom zatrzymanie aplikacji z usługami działającymi na pierwszym planie.

Powiadomienie pozostaje widoczne na pasku powiadomień, dopóki nie zostanie zamknięte przez aplikację lub użytkownika.

Powiadomienie z ostrzeżeniem

Począwszy od Androida 5.0, powiadomienia mogą się na krótko pojawiać w pływającym okienku zwanym powiadomieniem typu „heads-up”. Zwykle dotyczy to ważnych powiadomień, o których użytkownik musi się natychmiast dowiedzieć. Pojawiają się one tylko wtedy, gdy urządzenie jest odblokowane.

Rysunek 3. Powiadomienie z ostrzeżeniem pojawi się przed aplikacją działającą na pierwszym planie.

Powiadomienie z ostrzeżeniem pojawia się, gdy aplikacja je wyśle. Po chwili znika, ale pozostaje widoczne w panelu powiadomień jak zwykle.

Warunki, które mogą wywołać powiadomienia z wyprzedzeniem, to m.in.:

  • Użytkownik korzysta z aplikacji w trybie pełnoekranowym, np. gdy aplikacja używa fullScreenIntent.

  • Powiadomienie ma wysoki priorytet i używa dzwonków lub wibracji na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) lub starszym.

  • Kanał powiadomień ma wysoki priorytet na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym.

Ekran blokady

Od Androida 5.0 powiadomienia mogą pojawiać się na ekranie blokady.

Możesz programowo określić, czy powiadomienia publikowane przez aplikację mają być wyświetlane na bezpiecznym ekranie blokady, a jeśli tak, to jaki poziom szczegółowości ma być widoczny.

Użytkownicy mogą w ustawieniach systemu wybrać poziom szczegółowości powiadomień wyświetlanych na ekranie blokady lub wyłączyć wszystkie powiadomienia na ekranie blokady. Począwszy od Androida 8.0, użytkownicy mogą włączać i wyłączać powiadomienia na ekranie blokady dla każdego kanału powiadomień.

Rysunek 4. Powiadomienia na ekranie blokady z ukrytymi treściami poufnymi.

Więcej informacji znajdziesz w artykule Ustawianie widoczności ekranu blokady.

Plakietka ikony aplikacji

W obsługiwanych programach uruchamiających na urządzeniach z Androidem 8.0 (interfejs API na poziomie 26) lub nowszym ikony aplikacji wskazują nowe powiadomienia za pomocą kolorowej plakietki, czyli kropki powiadomień, na ikonie programu uruchamiającego odpowiedniej aplikacji.

Użytkownicy mogą dotknąć i przytrzymać ikonę aplikacji, aby wyświetlić powiadomienia z tej aplikacji. Z tego menu mogą odrzucać powiadomienia lub wykonywać związane z nimi działania, podobnie jak w przypadku panelu powiadomień.

Rysunek 5. Plakietki powiadomień i menu po naciśnięciu i przytrzymaniu.

Więcej informacji o tym, jak działają plakietki, znajdziesz w artykule Modyfikowanie plakietki powiadomienia.

urządzenia z Wear OS,

Jeśli użytkownik ma sparowane urządzenie z Wear OS, wszystkie powiadomienia będą się na nim automatycznie wyświetlać, w tym rozwijane szczegóły i przyciski działań.

Możesz ulepszyć to rozwiązanie, dostosowując wygląd powiadomień na urządzeniach do noszenia i udostępniając różne działania, w tym sugerowane odpowiedzi i odpowiedzi głosowe. Więcej informacji znajdziesz w artykule o tym, jak dodać do powiadomienia funkcje przeznaczone na urządzenia do noszenia.

Rysunek 6. Powiadomienia pojawiają się automatycznie na sparowanym urządzeniu z Wear OS.

Anatomia powiadomienia

Wygląd powiadomienia jest określany przez szablony systemowe, a aplikacja definiuje zawartość każdej części szablonu. Niektóre szczegóły powiadomienia są widoczne tylko w widoku rozwiniętym.

Rysunek 7.  Powiadomienie z podstawowymi informacjami.

Najczęstsze elementy powiadomienia są oznaczone na rysunku 7 w ten sposób:

  1. Mała ikona: wymagana; ustawiana za pomocą elementu setSmallIcon().
  2. Nazwa aplikacji: podana przez system.
  3. Sygnatura czasowa: podawana przez system, ale możesz ją zastąpić za pomocą setWhen() lub ukryć za pomocą setShowWhen(false).
  4. Duża ikona: opcjonalna; zwykle używana tylko w przypadku zdjęć kontaktów. Nie używaj jej jako ikony aplikacji. Ustaw za pomocą setLargeIcon().
  5. Tytuł: opcjonalny; ustawiany za pomocą setContentTitle().
  6. Tekst: opcjonalny; ustawiany za pomocą setContentText().

Zdecydowanie zalecamy używanie szablonów systemowych, aby zapewnić prawidłową zgodność projektu na wszystkich urządzeniach. W razie potrzeby możesz utworzyć niestandardowy układ powiadomień.

Więcej informacji o tworzeniu powiadomień z tymi i innymi funkcjami znajdziesz w artykule Tworzenie powiadomienia.

Działania powiadomień

Chociaż nie jest to wymagane, dobrym rozwiązaniem jest otwieranie odpowiedniej aktywności aplikacji po kliknięciu powiadomienia. Oprócz tego domyślnego działania powiadomienia możesz dodać przyciski czynności, które wykonują zadanie związane z aplikacją z poziomu powiadomienia – często bez otwierania aktywności – jak pokazano na rysunku 8.

Rysunek 8. Powiadomienie z przyciskami poleceń.

Począwszy od Androida 7.0 (interfejs API na poziomie 24), możesz dodać działanie, które umożliwia odpowiadanie na wiadomości lub wpisywanie innego tekstu bezpośrednio z poziomu powiadomienia.

Od Androida 10 (poziom API 29) platforma może automatycznie generować przyciski działań z sugerowanymi działaniami opartymi na intencjach.

Więcej informacji o dodawaniu przycisków działań znajdziesz w artykule Tworzenie powiadomienia.

Wymagaj odblokowanego urządzenia

Użytkownicy mogą widzieć działania związane z powiadomieniami na ekranie blokady urządzenia. Jeśli działanie powiadomienia powoduje uruchomienie działania przez aplikację lub wysłanie bezpośredniej odpowiedzi, użytkownicy muszą odblokować urządzenie, zanim aplikacja będzie mogła wywołać to działanie powiadomienia.

Na Androidzie 12 (poziom API 31) i nowszym możesz skonfigurować działanie powiadomienia w taki sposób, aby urządzenie musiało być odblokowane, aby aplikacja mogła wywołać to działanie, niezależnie od tego, jaki przepływ pracy uruchamia to działanie. Ta opcja zapewnia dodatkową ochronę powiadomień na zablokowanych urządzeniach.

Aby wymagać odblokowania urządzenia przed wywołaniem przez aplikację danego działania powiadomienia, podczas tworzenia działania powiadomienia przekaż wartość true do parametru setAuthenticationRequired(), jak pokazano w tym fragmencie kodu:

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

Rozwijane powiadomienie

Domyślnie tekst powiadomienia jest obcinany, aby zmieścił się w jednym wierszu. Jeśli chcesz, aby powiadomienie było dłuższe, możesz włączyć większy obszar tekstu, który można rozwinąć, stosując dodatkowy szablon, jak pokazano na rysunku 9.

Rysunek 9. Rozwijane powiadomienie z długim tekstem.

Możesz też utworzyć rozwijane powiadomienie z obrazem, w stylu skrzynki odbiorczej, z rozmową na czacie lub z elementami sterującymi odtwarzaniem multimediów. Więcej informacji znajdziesz w artykule Tworzenie rozwijanego powiadomienia.

Aktualizacje powiadomień i grupy

Aby uniknąć zalewania użytkowników wieloma lub zbędnymi powiadomieniami, gdy masz dodatkowe aktualizacje, zaktualizuj istniejące powiadomienie zamiast wysyłać nowe lub użyj powiadomienia w stylu skrzynki odbiorczej, aby wyświetlać aktualizacje rozmowy.

Jeśli jednak musisz dostarczyć wiele powiadomień, rozważ zgrupowanie ich w jedną grupę. Ta funkcja jest dostępna na urządzeniach z Androidem 7.0 i nowszym.

Grupa powiadomień umożliwia zwinięcie wielu powiadomień w jednym poście na panelu powiadomień z podsumowaniem. Użytkownik może stopniowo rozwijać grupę powiadomień i poszczególne powiadomienia w niej, aby uzyskać więcej szczegółów, jak pokazano na rysunku 10.

Rysunek 10. Zwinięta i rozwinięta grupa powiadomień.

Aby dowiedzieć się, jak dodawać powiadomienia do grupy, przeczytaj artykuł Tworzenie grupy powiadomień.

Kanały powiadomień

Począwszy od Androida w wersji 8.0 (interfejs API na poziomie 26), wszystkie powiadomienia muszą być przypisane do kanału, w przeciwnym razie nie będą się wyświetlać. Dzięki temu użytkownicy mogą wyłączyć konkretne kanały powiadomień w Twojej aplikacji zamiast wszystkich powiadomień. Użytkownicy mogą kontrolować opcje wizualne i dźwiękowe każdego kanału w ustawieniach systemu Android, jak pokazano na rysunku 11. Użytkownicy mogą też nacisnąć i przytrzymać powiadomienie, aby zmienić ustawienia powiązanego kanału.

Na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) i starszymi użytkownicy mogą zarządzać powiadomieniami tylko w przypadku poszczególnych aplikacji. W Androidzie 7.1 i starszych każda aplikacja ma tylko 1 kanał.

Rysunek 11. Ustawienia powiadomień aplikacji Zegar i jednego z jej kanałów.

Aplikacja może mieć osobne kanały dla każdego typu powiadomień, które wysyła. Aplikacja może też tworzyć kanały powiadomień w odpowiedzi na wybory użytkowników. Możesz na przykład skonfigurować osobne kanały powiadomień dla każdej grupy rozmów utworzonej przez użytkownika w aplikacji do przesyłania wiadomości.

Na kanale możesz też określić poziom ważności powiadomień na Androidzie 8.0 i nowszym, więc wszystkie powiadomienia opublikowane na tym samym kanale powiadomień zachowują się tak samo. Opisujemy to w następnej sekcji.

Więcej informacji znajdziesz w artykule Tworzenie kanałów powiadomień i zarządzanie nimi.

Ważność powiadomień

Android wykorzystuje ważność powiadomienia, aby określić, w jakim stopniu powiadomienie będzie przeszkadzać użytkownikowi wizualnie i dźwiękowo. Im większa ważność powiadomienia, tym bardziej przeszkadza ono w pracy.

Na Androidzie 7.1 (poziom interfejsu API 25) i starszym znaczenie powiadomienia jest określane przez jego priority.

Na Androidzie 8.0 (poziom interfejsu API 26) i nowszym znaczenie powiadomienia jest określane przez importance kanału, na którym jest ono publikowane. Użytkownicy mogą zmieniać ważność kanału powiadomień w ustawieniach systemu, jak pokazano na rysunku 12.

Rysunek 12. Użytkownicy mogą zmieniać ważność każdego kanału na urządzeniach z Androidem 8.0 i nowszymi wersjami.

Dostępne poziomy ważności i powiązane z nimi zachowania powiadomień są następujące:

  • Pilne: odtwarza dźwięk i wyświetla się jako powiadomienie wyskakujące.

  • Wysoki: wydaje dźwięk.

  • Średnie: nie wydaje dźwięku.

  • Niski: nie wydaje dźwięku i nie pojawia się na pasku stanu.

Wszystkie powiadomienia, niezależnie od ważności, pojawiają się w miejscach interfejsu systemu, które nie przerywają pracy użytkownika, np. w panelu powiadomień i jako plakietka na ikonie programu uruchamiającego. Możesz jednak zmienić wygląd plakietki powiadomienia.

Więcej informacji znajdziesz w artykule o ustawianiu ważności.

Tryb Nie przeszkadzać

Począwszy od Androida 5.0 (interfejs API na poziomie 21), użytkownicy mogą włączyć tryb Nie przeszkadzać, który wycisza dźwięk i wibracje wszystkich powiadomień. Powiadomienia nadal będą wyświetlane w interfejsie systemu w normalny sposób, chyba że użytkownik określi inaczej.

W trybie Nie przeszkadzać dostępne są 3 poziomy:

  • Całkowita cisza: blokuje wszystkie dźwięki i wibracje, w tym alarmy, muzykę, filmy i gry.
  • Tylko alarmy: blokuje wszystkie dźwięki i wibracje z wyjątkiem alarmów.
  • Tylko priorytetowe: użytkownicy mogą skonfigurować, które kategorie w całym systemie mogą przerywać ich pracę, np. tylko alarmy, przypomnienia, wydarzenia, połączenia lub wiadomości. W przypadku wiadomości i połączeń użytkownicy mogą filtrować je na podstawie nadawcy lub dzwoniącego, jak pokazano na rysunku 13.

Rysunek 13. Użytkownicy mogą zezwalać na powiadomienia na podstawie kategorii w całym systemie (po lewej) oraz nadawcy lub dzwoniącego (po prawej).

Na urządzeniach z Androidem w wersji 8.0 (poziom interfejsu API 26) i nowszej użytkownicy mogą dodatkowo zezwalać na powiadomienia z określonych kategorii aplikacji, zwanych też kanałami, przez zastępowanie trybu Nie przeszkadzać w przypadku poszczególnych kanałów. Na przykład aplikacja do płatności może mieć kanały powiadomień związane z wypłatami i wpłatami. W trybie priorytetowym użytkownik może zezwolić na powiadomienia o wypłatach, powiadomienia o wpłatach lub oba rodzaje powiadomień.

Na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) i starszym użytkownicy mogą zezwalać na powiadomienia z poszczególnych aplikacji, a nie z poszczególnych kanałów.

Aby skonfigurować powiadomienia dla tych ustawień użytkownika, musisz ustawić kategorię w całym systemie.

Powiadomienia dotyczące usług działających na pierwszym planie

Powiadomienie jest wymagane, gdy aplikacja uruchamia usługę na pierwszym planie, czyli Service działającą w tle, która jest długotrwała i widoczna dla użytkownika, np. odtwarzacz multimediów. Tego powiadomienia nie można odrzucić jak innych powiadomień. Aby usunąć powiadomienie, należy zatrzymać usługę lub usunąć ją z pierwszego planu.

Więcej informacji znajdziesz w artykule Usługi na pierwszym planie. Jeśli tworzysz odtwarzacz multimediów, przeczytaj też artykuł Odtwarzanie multimediów w tle.

Zachowania powiadomień

Android 16.0, poziom 36 interfejsu API

Powiadomienia są teraz automatycznie grupowane w imieniu aplikacji.

Automatycznie grupowane są te powiadomienia:

  • Powiadomienia bez podsumowania
  • Powiadomienia bez powiadomień dotyczących dzieci
  • Powiadomienia z pojedynczym lub niewielką liczbą powiadomień dotyczących dzieci

Android 15.0, poziom 35 interfejsu API

Odpoczynek

Android 15 wprowadza funkcję wyciszania powiadomień, która ma na celu poprawę komfortu użytkowania powiadomień przychodzących w szybkiej kolejności. Ta funkcja zmniejsza widoczność, głośność i intensywność wibracji powtarzających się powiadomień na maksymalnie 2 minuty.

Powiadomienia krytyczne, które wymagają dźwięku i wibracji, aby zwrócić uwagę użytkownika, nie podlegają okresowi wyciszenia. Użytkownik może wyłączyć okres wyciszenia powiadomień w Ustawieniach.

Rysunek 9. Ustawienia wyciszania powiadomień.

Poniżej znajdziesz przykład, jak znaleźć ustawienia czasu oczekiwania na powiadomienia:

Kotlin

val intent = Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS)
val pendingIntent =
            PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)

Java

Intent intent = new Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS)
PendingIntent pendingIntent =
            PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)