Powiadomienie to wiadomość wyświetlana na Androidzie poza interfejsem aplikacji, by przekazać użytkownikowi przypomnienia, informacje od innych osób lub inne aktualne informacje z Twojej aplikacji. Użytkownicy mogą kliknąć powiadomienie, aby otworzyć aplikację lub wykonać działanie bezpośrednio z poziomu powiadomienia.
Na tej stronie znajdziesz ogólny opis miejsc, w których pojawiają się powiadomienia, oraz dostępnych funkcji. Aby zacząć tworzyć powiadomienia, przeczytaj artykuł Tworzenie powiadomienia.
Więcej informacji o projektowaniu powiadomień i wzorcach interakcji znajdziesz w przewodniku po projektowaniu powiadomień.
Wygląd na urządzeniu
Powiadomienia automatycznie pojawiają się użytkownikom w różnych lokalizacjach i formatach. Powiadomienie ma postać ikony na pasku stanu, bardziej szczegółowego wpisu w panelu powiadomień i plakietki na ikonie aplikacji. Powiadomienia pojawiają się też na sparowanych urządzeniach do noszenia.
Pasek stanu i panel powiadomień
Powiadomienie pojawia się po raz pierwszy jako ikona na pasku stanu.
Użytkownicy mogą przesunąć palcem w dół na pasku stanu, aby otworzyć panel powiadomień, gdzie będą mogli zobaczyć więcej szczegółów i wykonać działania związane z powiadomieniem.
Użytkownicy mogą przeciągnąć powiadomienie w dół, aby wyświetlić rozwinięty widok, w którym widać dodatkowe treści i przyciski polecenia (jeśli są dostępne). Począwszy od Androida 13 ten widok rozwinięty zawiera przycisk umożliwiający użytkownikom zatrzymanie aplikacji, która ma uruchomione usługi na pierwszym planie.
Powiadomienie pozostaje widoczne w panelu powiadomień, dopóki nie zostanie zamknięte przez aplikację lub użytkownika.
Ostrzeżenie
Począwszy od Androida 5.0, powiadomienia mogą pojawiać się przez krótki czas w pływającym oknie nazywanym powiadomieniem z wyprzedzeniem. Zazwyczaj jest to działanie w przypadku ważnych powiadomień, o których użytkownik powinien natychmiast wiedzieć. Pojawia się ono tylko wtedy, gdy urządzenie jest odblokowane.
Powiadomienie z ostrzeżeniem wyświetla się, gdy aplikacja wysyła powiadomienie. Po chwili znika, ale pozostaje normalnie w panelu powiadomień.
Oto warunki, które mogą powodować wyświetlanie powiadomień z ostrzeżeniem:
Aktywność użytkownika jest w trybie pełnoekranowym, na przykład 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ń jest ważny na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym.
Ekran blokady
Począwszy od Androida 5.0, powiadomienia mogą pojawiać się na ekranie blokady.
Możesz zaprogramować, czy powiadomienia publikowane przez Twoją aplikację mają być wyświetlane na bezpiecznym ekranie blokady, a jeśli tak, to na jakim poziomie szczegółowości.
W ustawieniach systemu użytkownicy mogą wybrać poziom szczegółowości powiadomień na ekranie blokady lub wyłączyć wszystkie powiadomienia na ekranie blokady. Począwszy od Androida 8.0 użytkownicy mogą wyłączać lub włączać powiadomienia na ekranie blokady dla każdego kanału powiadomień.
Więcej informacji znajdziesz w sekcji Ustawianie widoczności ekranu blokady.
Plakietka ikony aplikacji
W obsługiwanych programach uruchamiających na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym ikony aplikacji są oznaczone kolorową plakietką znaną jako kropka powiadomienia na odpowiedniej ikonie Menu z aplikacjami.
Użytkownicy mogą kliknąć i przytrzymać ikonę aplikacji, aby zobaczyć powiadomienia z tej aplikacji. W tym menu użytkownicy mogą zamykać powiadomienia i wykonywać dotyczące ich czynności, podobnie jak w szufladzie powiadomień.
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, w tym rozwijane szczegóły i przyciski poleceń, pojawiają się automatycznie na tym urządzeniu.
Możesz zwiększyć komfort korzystania z usługi, 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 dodawaniu do powiadomienia funkcji przeznaczonych na urządzenia do noszenia.
Anatomia powiadomień
Projekt powiadomienia jest określany przez szablony systemowe, a aplikacja określa zawartość każdej części szablonu. Niektóre szczegóły powiadomienia są widoczne tylko w widoku rozwiniętym.
Najczęstsze części powiadomienia zostały wskazane na rys. 7 w ten sposób:
- Mała ikona: wymagana; ustawiona za pomocą właściwości
setSmallIcon()
. - Nazwa aplikacji: podana przez system.
- Sygnatura czasowa: podana przez system, ale możesz ją zastąpić poleceniem
setWhen()
lub ją ukryć, używającsetShowWhen(false)
. - Duża ikona: opcjonalna, zwykle używana tylko do zdjęć kontaktów.
Nie używaj go jako ikony aplikacji. Ustaw za pomocą właściwości
setLargeIcon()
. - Tytuł: opcjonalny; ustawiany za pomocą właściwości
setContentTitle()
. - Tekst: opcjonalny; ustawiany za pomocą właściwości
setContentText()
.
Zdecydowanie zalecamy korzystanie z szablonów systemowych, aby projekt był zgodny z zasadami na wszystkich urządzeniach. Jeśli to konieczne, możesz utworzyć niestandardowy układ powiadomień.
Więcej informacji na temat tworzenia powiadomień za pomocą tych i innych funkcji znajdziesz w artykule Tworzenie powiadomienia.
Działania powiadomień
Chociaż nie jest to wymagane, dobrze jest, aby każde kliknięcie otwierało odpowiednią aktywność w aplikacji. Oprócz tego domyślnego działania możesz dodać przyciski poleceń, które wykonują z powiadomienia czynność związaną z aplikacją – często bez otwierania żadnej aktywności – jak pokazano na ilustracji 8.
Od Androida 7.0 (poziom interfejsu API 24) bezpośrednio z poziomu powiadomienia możesz dodawać działanie, aby odpowiadać na wiadomości lub wpisywać inny tekst.
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 poleceń jest szczegółowo wyjaśnione w sekcji Tworzenie powiadomienia.
Wymaganie odblokowanego urządzenia
Użytkownicy mogą zobaczyć działania związane z powiadomieniami na ekranie blokady urządzenia. Jeśli działanie związane z powiadomieniem powoduje uruchomienie przez aplikację działania lub wysłanie bezpośredniej odpowiedzi, użytkownicy muszą odblokować urządzenie, aby aplikacja mogła wywołać to działanie.
W Androidzie 12 (poziom interfejsu API 31) i nowszych możesz skonfigurować powiadomienie, tak aby aplikacja mogła wywołać takie działanie, niezależnie od przepływu pracy. Ta opcja dodaje kolejną warstwę zabezpieczeń do powiadomień na zablokowanych urządzeniach.
Aby wymagać odblokowania urządzenia przed wywołaniem danego powiadomienia przez aplikację, podczas tworzenia działania związanego z powiadomieniem przekaż true
do 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 przycinany tak, aby mieścił się w jednym wierszu. Jeśli chcesz, aby powiadomienie było dłuższe, możesz wykorzystać dodatkowy szablon, jak pokazano na ilustracji 9. Aby zwiększyć obszar tekstowy, który można rozwinąć.
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 rozwijanych powiadomień.
Aktualizacje powiadomień i grupy
Aby nie zasypywać użytkowników wieloma lub nadmiarowymi powiadomieniami o aktualizacjach, zaktualizuj istniejące powiadomienie, zamiast wysyłać nowe. Możesz też skorzystać z powiadomienia w stylu skrzynki odbiorczej, aby pokazać aktualizacje rozmowy.
Jeśli jednak chcesz dostarczać wiele powiadomień, rozważ pogrupowanie ich w grupę. Funkcja jest dostępna na Androidzie 7.0 i nowszych.
Grupa powiadomień umożliwia zwijanie wielu powiadomień w jednym poście w panelu powiadomień z podsumowaniem. Użytkownik może stopniowo rozwijać grupę powiadomień i każde zawarte w niej powiadomienia, aby uzyskać więcej szczegółów, jak pokazano na ilustracji 10.
Aby dowiedzieć się, jak dodać 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ą. Umożliwi to użytkownikom wyłączenie określonych kanałów powiadomień aplikacji zamiast wyłączania wszystkich powiadomień. Użytkownicy mogą zmieniać opcje wizualne i dźwiękowe każdego kanału z poziomu ustawień systemu Android, jak pokazano na ilustracji 11. Użytkownicy mogą też nacisnąć i przytrzymać powiadomienie, aby zmienić działanie powiązanego kanału.
Na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) lub starszym użytkownicy mogą zarządzać powiadomieniami tylko dla poszczególnych aplikacji. Każda aplikacja ma tylko jeden kanał na Androida 7.1 lub starszego.
Aplikacja może mieć oddzielny kanał dla każdego typu powiadomień, których dotyczy problem. Aplikacja może również 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 kanale w Androidzie 8.0 i nowszych powiadomieniach określa się poziom ważności. Dzięki temu wszystkie powiadomienia publikowane na tym samym kanale powiadomień działają tak samo. Zostało to opisane w następnej sekcji.
Więcej informacji znajdziesz w artykule o tworzeniu kanałów powiadomień i zarządzaniu nimi.
Znaczenie powiadomień
Android na podstawie ważności powiadomienia określa, w jakim stopniu powiadomienie zakłóca wizualne i dźwiękowe działanie użytkownika. Im większe znaczenie ma powiadomienie, tym bardziej rozpraszające.
W Androidzie 7.1 (poziom interfejsu API 25) i starszych znaczenie powiadomienia jest określane przez jego priority
.
W Androidzie 8.0 (poziom interfejsu API 26) i nowszych o wadze powiadomienia decyduje o tym importance
kanału, na którym zostało ono opublikowane. Użytkownicy mogą zmienić znaczenie kanału powiadomień w ustawieniach systemu, jak pokazano na ilustracji 12.
Możliwe poziomy ważności i powiązane z nimi zachowania powiadomień:
Pilne: wydaje dźwięk i wyświetla się jako powiadomienie z ostrzeżeniem.
Wysoki: wydaje dźwięk.
Średni: brak dźwięku.
Niska: nie wydaje dźwięku i wyświetla się na pasku stanu.
Wszystkie powiadomienia, niezależnie od ich ważności, pojawiają się w miejscach w interfejsie systemu, które nie zakłócają działania systemu, np. w panelu powiadomień lub w postaci plakietki na ikonie programu uruchamiającego. Możesz jednak zmienić wygląd plakietki powiadomienia.
Więcej informacji znajdziesz w artykule o określaniu ważności.
Tryb Nie przeszkadzać
Począwszy od Androida 5.0 (poziom interfejsu API 21), użytkownicy mogą włączać tryb Nie przeszkadzać, który wycisza dźwięki i wibracje we wszystkich powiadomieniach. Powiadomienia będą się wyświetlać w interfejsie systemu w zwykły 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ą określać, które kategorie systemowe mogą im przeszkadzać, np. alarmy, przypomnienia, wydarzenia, połączenia lub wiadomości. W przypadku wiadomości i połączeń użytkownicy mogą filtrować wiadomości według nadawcy lub rozmówcy, jak pokazano na ilustracji 13.
Na Androidzie 8.0 (poziom interfejsu API 26) i nowszych użytkownicy mogą dodatkowo zezwolić na wyświetlanie powiadomień z kategorii aplikacji (nazywanych też kanałami). W tym celu dla każdego kanału zastąpią tryb Nie przeszkadzać. Na przykład aplikacja płatnicza może mieć kanały powiadomień dotyczących wypłat i wpłat. W trybie priorytetowym użytkownik może zezwolić na powiadomienia o odstąpieniu od umowy lub wpłatach lub oba te powiadomienia.
Na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) lub starszym użytkownicy mogą zezwalać na powiadomienia indywidualnie dla każdej aplikacji, a nie tylko dla każdego kanału.
Aby skonfigurować powiadomienia dla tych ustawień użytkownika, musisz ustawić kategorię obejmującą cały system.
Powiadomienia dotyczące usług działających na pierwszym planie
Powiadomienie jest wymagane, gdy aplikacja działa usługą na pierwszym planie, czyli działającym w tle działającym od dawna i widocznym dla użytkownika systemem Service
(takim jak odtwarzacz multimediów). Tego powiadomienia nie można odrzucić tak 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 na temat usług działających na pierwszym planie. Jeśli tworzysz odtwarzacz multimedialny, przeczytaj też artykuł Odtwarzanie multimediów w tle.
Limity postów
Od Androida 8.1 (poziom interfejsu API 27) aplikacje nie mogą powiadamiać dźwięku powiadomienia częściej niż raz na sekundę. Jeśli aplikacja publikuje wiele powiadomień w ciągu jednej sekundy, wszystkie wyświetlają się zgodnie z oczekiwaniami, ale tylko pierwsze powiadomienie na sekundę jest sygnalizowane dźwiękiem.
Android stosuje też jednak ograniczenie liczby żądań podczas aktualizowania powiadomienia. Jeśli zbyt często publikujesz aktualizacje w jednym powiadomieniu, na przykład w czasie krótszym niż jedna sekunda, system może je odrzucać.
Zgodność powiadomień
Interfejs systemu powiadomień Androida i związane z nimi interfejsy API stale ewoluują. Aby korzystać z najnowszych funkcji interfejsu Notification API, gdy jednocześnie obsługują one starsze urządzenia, użyj interfejsu Support Library Notification API NotificationCompat
i jego podklas, a także NotificationManagerCompat
.
Pozwala to uniknąć pisania kodu warunkowego służącego do sprawdzania poziomów interfejsów API, ponieważ obsługują go te interfejsy API.
NotificationCompat
jest aktualizowany wraz z rozwojem platformy, aby uwzględniał najnowsze metody. Jednak dostępność metody w NotificationCompat
nie gwarantuje, że odpowiednia funkcja będzie dostępna na starszych urządzeniach. W niektórych przypadkach wywołanie nowo wprowadzonego interfejsu API może nie działać na starszych urządzeniach.
Poniżej znajdziesz podsumowanie najważniejszych zmian w działaniu powiadomień na Androida według poziomu interfejsu API.
Android 5.0, poziom API 21
Włącza ekran blokady i powiadomienia HUD.
Pozwala użytkownikowi przełączyć telefon w tryb Nie przeszkadzać i określić, które powiadomienia mogą mu przeszkadzać, gdy urządzenie jest w trybie tylko priorytetowym.
Dodaje metody określające, czy powiadomienie ma być wyświetlane na ekranie blokady, np.
setVisibility()
, oraz ustalanie „publicznej” wersji tekstu powiadomienia.Dodaje metodę
setPriority()
, która informuje system, jak przeszkadzające jest powiadomienie. Na przykład ustawienie wysokiego priorytetu sprawia, że powiadomienie wyświetla się jako powiadomienie z ostrzeżeniem.Dodaje obsługę stosów powiadomień na urządzeniach z Androidem Wear (obecnie Wear OS). Umieść powiadomienia w stosie za pomocą
setGroup()
. Stosy powiadomień, nazywane później grupami lub pakietami, nie są obsługiwane na tabletach ani telefonach do wersji Androida 7.0 (poziom interfejsu API 24).
Android 7.0, poziom API 24
Zmienia styl szablonów powiadomień, by uwypuklić baner powitalny i awatara.
Dodaje 3 szablony powiadomień: jeden dla aplikacji do obsługi wiadomości, a dwa pozostałe do dekoracji niestandardowych widoków treści za pomocą rozwijanych zasobów reklamowych i innych elementów dekoracyjnych.
Dodaje obsługę grup powiadomień na urządzeniach mobilnych, takich jak telefony i tablety. Interfejs API używa tego samego interfejsu API co stosy powiadomień Androida Wear (nazywane teraz Wear OS) wprowadzone w Androidzie 5.0 (poziom API 21).
Umożliwia użytkownikom odpowiadanie w powiadomieniu przy użyciu odpowiedzi w tekście. Mogą wpisywać tekst, który jest następnie przekazywany do aplikacji nadrzędnej.
Android 8.0, poziom API 26
Powoduje, że poszczególne powiadomienia będą umieszczane na określonym kanale.
Pozwala użytkownikom wyłączać powiadomienia z konkretnego kanału, zamiast wyłączać wszystkie powiadomienia z danej aplikacji.
Sprawia, że aplikacje z aktywnymi powiadomieniami wyświetlają plakietkę powiadomień u góry ikony aplikacji na ekranie głównym lub ekranie programu uruchamiającego.
Pozwala użytkownikom odłożyć powiadomienie z panelu. Możesz ustawić automatyczne czas oczekiwania na powiadomienie.
Pozwala ustawić kolor tła powiadomienia.
Przenosi niektóre interfejsy API dotyczące zachowania powiadomień z
Notification
doNotificationChannel
. Na przykład użyjNotificationChannel.setImportance()
zamiastNotificationCompat.Builder.setPriority()
na Androidzie 8.0 i nowszych.
Android 13.0, poziom API 33
- Dodaje uprawnienia środowiska wykonawczego. Aby aplikacja mogła wysyłać niewykluczonepowiadomienia, użytkownik musi jej udzielić.
Android 14.0, poziom API 34
Ogranicza powiadomienia intencji pełnoekranowej do aplikacji, które wykonują połączenia i alarmy. Użyj interfejsu API
NotificationManager.canUseFullScreenIntent
, aby sprawdzić, czy aplikacja ma odpowiednie uprawnienia. Jeśli nie, aplikacja może użyćACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
, aby otworzyć stronę ustawień, na której użytkownicy mogą przyznawać te uprawnienia.Zmienia sposób, w jaki użytkownicy widzą powiadomienia, których nie można zamknąć, umożliwiając im odrzucanie działań związanych z powiadomieniami nawet wtedy, gdy jest ustawiona flaga
Notification.FLAG_ONGOING_EVENT
. Nie dotyczy to powiadomieńCallStyle
, jeśli ustawiona jest flagaNotification.FLAG_ONGOING_EVENT
lub kontroler zasad dotyczących urządzeń (DPC) oraz pakiety pomocnicze dla firm. Nie dotyczy to też sytuacji, gdy telefon jest zablokowany ani gdy użytkownik wybierze Wyczyść wszystko.