Informacje o powiadomieniach

Powiadomienie to komunikat wyświetlany przez Androida poza interfejsem aplikacji, który przypomina użytkownikowi o czymś, informuje go o wiadomościach od innych osób lub przekazuje 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 wyświetlają się powiadomienia, oraz dostępnych funkcji.

Przewodniki po implementacji

Z tych przewodników dowiesz się, jak zaimplementować w aplikacji różne funkcje powiadomień:

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

Wygląd na urządzeniu

Powiadomienia automatycznie wyświetlają się użytkownikom w różnych miejscach i formatach. Powiadomienie jest wyświetlane jako ikona na pasku stanu, bardziej szczegółowy wpis w obszarze powiadomień i plakietka na ikonie aplikacji.

Uwzględnianie działań użytkowników na różnych urządzeniach

Powiadomienia domyślnie wyświetlają się też na sparowanych urządzeniach do noszenia. W sytuacjach, gdy treść powiadomienia jest istotna tylko dla urządzenia źródłowego, użyj setLocalOnly(). Przykładem jest powiadomienie potwierdzające zakończenie pobierania multimediów. Więcej wskazówek dotyczących powiadomień na Wear OS znajdziesz w artykule Wskazówki dotyczące powiadomień na Wear OS.

Pasek stanu i obszar 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ć obszar 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 dół w obszarze powiadomień, aby wyświetlić rozszerzony widok, 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 trwającymi usługami na pierwszym planie.

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

Powiadomienie z ostrzeżeniem

Od Androida 5.0 powiadomienia mogą przez chwilę pojawiać się w pływającym oknie zwanym powiadomieniem z ostrzeżeniem. Zwykle dotyczy to ważnych powiadomień, o których użytkownik musi się natychmiast dowiedzieć. Powiadomienie z ostrzeżeniem pojawia się tylko wtedy, gdy urządzenie jest odblokowane.

Rysunek 3. Powiadomienie z ostrzeżeniem pojawia się przed aplikacją na pierwszym planie.

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

Oto warunki, które mogą spowodować wyświetlenie powiadomienia z ostrzeżeniem:

  • Aktywność użytkownika jest 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) i starszym.

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

Ekran blokady

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

Możesz programowo określić, czy powiadomienia wysyłane 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 widoczny w powiadomieniach na ekranie blokady lub wyłączyć wszystkie powiadomienia na ekranie blokady. 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 ukrytą treścią poufną.

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

Plakietka ikony aplikacji

W obsługiwanych programach uruchamiających na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) i nowszym ikony aplikacji wskazują nowe powiadomienia za pomocą kolorowej plakietki zwanej kropką powiadomienia na odpowiedniej ikonie programu uruchamiającego.

Użytkownicy mogą nacisnąć i przytrzymać ikonę aplikacji, aby zobaczyć powiadomienia z tej aplikacji. Użytkownicy mogą odrzucać powiadomienia lub wykonywać działania z tego menu, podobnie jak w obszarze powiadomień.

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

Więcej informacji o tym, jak działają plakietki, znajdziesz w artykule Zmienianie 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 Dodawanie do powiadomienia funkcji specyficznych dla urządzeń do noszenia.

Rysunek 6. Powiadomienia automatycznie wyświetlają się na sparowanym urządzeniu z Wear OS.

Struktura 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 rozwiniętym widoku.

Rysunek 7. Powiadomienie z podstawowymi szczegółami.

Najczęstsze części powiadomienia są wskazane na rysunku 7:

  1. Mała ikona: wymagana; ustawiana za pomocą setSmallIcon().
  2. Nazwa aplikacji: podawana 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. Ustawiana 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 powiadomienia layout.

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, aby każde powiadomienie otwierało odpowiednią aktywność aplikacji po kliknięciu. Oprócz domyślnego działania powiadomienia możesz dodać przyciski działań, 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 działań.

Od Androida 7.0 (poziom interfejsu API 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 interfejsu 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 odblokowania urządzenia

Użytkownicy mogą widzieć działania powiadomień na ekranie blokady urządzenia. Jeśli działanie powiadomienia powoduje uruchomienie aktywności 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.

W Androidzie 12 (poziom interfejsu API 31) i nowszym możesz skonfigurować działanie powiadomienia tak, aby aplikacja mogła je wywołać tylko wtedy, gdy urządzenie jest odblokowane, niezależnie od tego, jaki przepływ pracy uruchamia to działanie. Ta opcja dodaje dodatkową warstwę bezpieczeństwa do powiadomień na zablokowanych urządzeniach.

Aby wymagać odblokowania urządzenia, zanim aplikacja wywoła dane działanie powiadomienia , podczas tworzenia działania powiadomienia przekaż wartość true do setAuthenticationRequired(), jak pokazano w tym fragmencie kodu:

val intent = Intent(
    context, null
    /** Replace with a valid target activity */
)
val moreSecureNotification = NotificationCompat.Action.Builder(
    0, "Reply",
    PendingIntentCompat.getActivity(context, 0, intent, PendingIntent.FLAG_NO_CREATE, false)
)
    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Rozwijane powiadomienie

Domyślnie tekst powiadomienia jest skracany, aby zmieścił się w jednym wierszu. Jeśli chcesz, aby powiadomienie było dłuższe, możesz włączyć większy obszar tekstowy, 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 i grupy powiadomień

Aby nie zalewać 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 rozmów.

Jeśli jednak musisz wysłać kilka powiadomień, rozważ zgrupowanie ich w grupę dostępną w Androidzie 7.0 i nowszym.

Grupa powiadomień umożliwia zwinięcie kilku powiadomień w jeden post w obszarze powiadomień z podsumowaniem. Użytkownik może stopniowo rozwijać grupę powiadomień i każde powiadomienie 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ń

Od Androida 8.0 (poziom interfejsu API 26) wszystkie powiadomienia muszą być przypisane do kanału, w przeciwnym razie się nie wyświetlą. Dzięki temu użytkownicy mogą wyłączyć konkretne kanały powiadomień w 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ć zachowanie powiązanego kanału.

Na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) i starszym użytkownicy mogą zarządzać powiadomieniami tylko w przypadku poszczególnych aplikacji. W Androidzie 7.1 i starszym 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 powiadomienia. 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 obsługi wiadomości.

Kanał służy też do określania poziomu ważności powiadomień w Androidzie 8.0 i nowszym, więc wszystkie powiadomienia wysyłane na ten sam kanał powiadomień mają takie samo zachowanie. Opisano to w następnej sekcji.

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

Ważność powiadomień

Android używa ważności powiadomienia, aby określić, jak bardzo powiadomienie ma przeszkadzać użytkownikowi wizualnie i dźwiękowo. Im większa ważność powiadomienia, tym bardziej przeszkadza ono użytkownikowi.

W Androidzie 7.1 (poziom interfejsu API 25) i starszym ważność powiadomienia jest określana przez jego priority.

W Androidzie 8.0 (poziom interfejsu API 26) i nowszym ważność powiadomienia jest określana przez importance kanału, na który zostało wysłane. Użytkownicy mogą zmienić 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 w Androidzie 8.0 i nowszym.

Możliwe poziomy ważności i powiązane z nimi zachowania powiadomień:

  • Pilne: odtwarza dźwięk i wyświetla się jako powiadomienie z ostrzeżeniem.

  • Wysoki: odtwarza dźwięk.

  • Średni: nie odtwarza dźwięku.

  • Niski: nie odtwarza dźwięku i nie wyświetla się na pasku stanu.

Wszystkie powiadomienia, niezależnie od ważności, wyświetlają się w nieprzeszkadzających miejscach interfejsu systemu, np. w obszarze powiadomień i jako plakietka na ikonie programu uruchamiającego. Możesz jednak zmienić wygląd plakietki powiadomienia.

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

Tryb Nie przeszkadzać

Od Androida 5.0 (poziom interfejsu API 21) użytkownicy mogą włączyć tryb Nie przeszkadzać, który wycisza dźwięk i wibracje wszystkich powiadomień. Powiadomienia nadal wyświetlają się w interfejsie systemu jak zwykle, chyba że użytkownik określi inaczej.

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

  • Całkowite wyciszenie: 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 systemowe mogą im przeszkadzać, np. tylko alarmy, przypomnienia, wydarzenia, połączenia lub wiadomości. W przypadku wiadomości i połączeń użytkownicy mogą filtrować według nadawcy lub dzwoniącego, jak pokazano na rysunku 13.

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

W Androidzie 8.0 (poziom interfejsu API 26) i nowszym użytkownicy mogą dodatkowo zezwalać na powiadomienia w przypadku kategorii specyficznych dla aplikacji – zwanych też kanałami – przez zastąpienie trybu Nie przeszkadzać w przypadku poszczególnych kanałów. Na przykład aplikacja do obsługi płatności może mieć kanały powiadomień związanych 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 te typy powiadomień.

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

Aby skonfigurować powiadomienia pod kątem tych ustawień użytkownika, musisz ustawić kategorię systemową.

Powiadomienia o usługach na pierwszym planie

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

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 interfejsu API 36

Powiadomienia są teraz automatycznie grupowane w imieniu aplikacji.

Automatycznie grupowane są te powiadomienia:

  • Powiadomienia bez podsumowania
  • Powiadomienia bez powiadomień podrzędnych
  • Powiadomienia z jednym lub niewielką liczbą powiadomień podrzędnych

Android 15.0, poziom interfejsu API 35

Okres oczekiwania

W Androidzie 15 wprowadziliśmy funkcję wyciszania powiadomień, która ma na celu poprawę działania powiadomień przychodzących w szybkim tempie. Ta funkcja zmniejsza widoczność, głośność i intensywność wibracji w przypadku powtarzających się powiadomień na maksymalnie 2 minuty.

Wyciszanie nie dotyczy ważnych powiadomień, które wymagają dźwięku i haptyki, aby przyciągnąć uwagę. Użytkownik może wyłączyć wyciszanie powiadomień w Ustawieniach.

Rysunek 9. Ustawienia wyciszania powiadomień.