Informacje o powiadomieniach

Powiadomienie to wiadomość, którą Android wyświetla poza interfejsem aplikacji, aby przypominać użytkownikowi o czymś, informować go o wiadomościach od innych osób 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 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 wyświetla się jako ikona na pasku stanu, bardziej szczegółowy wpis w obszarze powiadomień i plakietka na ikonie aplikacji.

Zachowanie 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

Począwszy 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ę na pierwszym planie aplikacji.

Powiadomienie z ostrzeżeniem pojawia się, gdy aplikacja wyśle powiadomienie. Po chwili znika, ale nadal jest 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

Począwszy od Androida 5.0 powiadomienia mogą pojawiać się na ekranie blokady.

Możesz programowo ustawić, 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. Począwszy od Androida 8.0 użytkownicy mogą wyłączać i włą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 w tym menu, podobnie jak w obszarze 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 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ć wrażenia użytkowników, dostosowując wygląd powiadomień na urządzeniach do noszenia i udostępniając różne działania, w tym sugerowane odpowiedzi i głosowe wprowadzanie tekstu. Więcej informacji znajdziesz w artykule o dodawaniu 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ą oznaczone na rysunku 7 w ten sposób:

  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 po kliknięciu otwierało odpowiednią aktywność aplikacji. Oprócz tego 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ń.

Począwszy 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.

Począwszy od Androida 10 (poziom interfejsu API 29), platforma może automatycznie generować przyciski działań z sugerowanymi działaniami opartymi na intencjach.

Dodawanie przycisków działań zostało opisane 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, że aplikacja uruchamia aktywność lub wysyła bezpośrednią odpowiedź, 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 moreSecureNotification = Notification.Action.Builder(...)

      // 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 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 rozmów.

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

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ń

Począwszy 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 starszych wersjach 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.

Na Androidzie 8.0 i nowszym kanał służy też do określania poziomu ważności powiadomień, 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.

  • Wysokie: odtwarza dźwięk.

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

  • Niskie: 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 o ustawianiu ważności.

Tryb Nie przeszkadzać

Począwszy 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 w normalny sposób, 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 z 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ą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 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 pojedynczym 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ę wrażeń użytkowników w przypadku 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 powiadomień krytycznych, które wymagają dźwięku i wibracji, aby przyciągnąć uwagę. Użytkownik może wyłączyć wyciszanie powiadomień w Ustawieniach.

Rysunek 9. Ustawienia wyciszania powiadomień.

Oto przykład, jak znaleźć ustawienia wyciszania powiadomień:

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