Powiadomienie to wiadomość wyświetlana przez Androida poza interfejsem aplikacji, aby przekazać użytkownikowi przypomnienia, informacje od innych osób lub inne aktualne informacje z aplikacji. Użytkownicy mogą kliknąć powiadomienie, aby otworzyć aplikację lub wykonać działanie bezpośrednio z powiadomienia.
Na tej stronie znajdziesz przegląd miejsc, w których pojawiają się powiadomienia, i dostępne funkcje. Aby zacząć tworzyć powiadomienia, 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 będzie wyświetlane jako ikona na pasku stanu, bardziej szczegółowy wpis w panelu powiadomień oraz plakietka na ikonie aplikacji. Powiadomienia wyświetlają się też na sparowanych urządzeniach do noszenia.
Pasek stanu i szufletę powiadomień
Gdy wyślesz powiadomienie, najpierw pojawi się ono jako ikona na pasku 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 działać na powiadomieniu.
Użytkownicy mogą przeciągnąć powiadomienie w schowku w dół, aby wyświetlić rozszerzone widok, w którym znajdują się dodatkowe treści i przyciski działania (jeśli są dostępne). Począwszy od Androida 13 ten widok rozwinięty zawiera przycisk, który umożliwia użytkownikom zatrzymanie aplikacji z aktywnymi usługami na pierwszym planie.
Powiadomienie pozostaje widoczne w szufladzie powiadomień, dopóki nie zostanie zamknięte przez aplikację lub użytkownika.
Powiadomienie z ostrzeżeniem
Począwszy od Androida 5.0 powiadomienia mogą pojawiać się na chwilę w oknie nakładkowym, zwanym powiadomieniem z poprzednim wyświetleniem. Takie zachowanie jest zwykle związane z ważnymi powiadomieniami, które użytkownik musi znać natychmiast. Powiadomienia te pojawiają się tylko wtedy, gdy urządzenie jest odblokowane.
Powiadomienie z ostrzeżeniem pojawia się, gdy aplikacja wyśle powiadomienie. Po chwili znika, ale pozostaje widoczny w panelu powiadomień.
Warunki, które mogą powodować wyświetlanie powiadomień z ostrzeżeniem, są następujące:
Aktywność użytkownika 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 duże znaczenie na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym.
Ekran blokady
Począwszy od Androida 5.0 powiadomienia mogą wyświetlać się na ekranie blokady.
Możesz ustawić programowo, czy powiadomienia publikowane przez Twoją aplikację mają być wyświetlane na zabezpieczonym ekranie blokady, a jeśli tak, to na jakim poziomie szczegółowości.
Użytkownicy mogą używać ustawień systemowych, aby 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ń.
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 (poziom interfejsu API 26) lub nowszym ikony aplikacji oznaczają nowe powiadomienia kolorową plakietką, nazywaną kropką powiadomienia na odpowiedniej ikonie programu uruchamiającego.
Użytkownicy mogą nacisnąć i przytrzymać ikonę aplikacji, aby zobaczyć powiadomienia z tej aplikacji. W tym menu można zamykać powiadomienia i wykonywać na nich 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 przyciski szczegółów i działania) wyświetlają się automatycznie.
Możesz zwiększyć wygodę korzystania z aplikacji, dostosowując wygląd powiadomień na urządzeniach do noszenia oraz dodając różne działania, w tym sugerowane odpowiedzi czy odpowiedzi głosowe. Więcej informacji znajdziesz w artykule o dodawaniu do powiadomień funkcji związanych z urządzeniami do noszenia.
Budowa powiadomienia
Projekt powiadomienia jest określany przez szablony systemowe, a aplikacja określa zawartość poszczególnych części szablonu. Niektóre szczegóły powiadomienia są widoczne tylko w rozwiniętym widoku.
Najczęstsze elementy powiadomienia są oznaczone na rysunku 7 w następujący sposób:
- Mała ikona: wymagana; ustawiona przy użyciu
setSmallIcon()
. - Nazwa aplikacji: podawana przez system.
- Znak czasu: jest podawany przez system, ale możesz go zastąpić za pomocą
setWhen()
lub ukryć za pomocąsetShowWhen(false)
. - Duża ikona: opcjonalna, zwykle używana tylko do zdjęć kontaktów.
Nie używaj go jako ikony aplikacji. Ustaw za pomocą
setLargeIcon()
. - Tytuł: opcjonalny; ustaw za pomocą
setContentTitle()
. - Tekst: opcjonalny; ustaw za pomocą
setContentText()
.
Zdecydowanie zalecamy używanie szablonów systemowych, aby zapewnić odpowiednią zgodność projektu na wszystkich urządzeniach. W razie potrzeby możesz utworzyć niestandardowy układ powiadomienia.
Więcej informacji o tworzeniu powiadomień związanych z tymi i innymi funkcjami znajdziesz w artykule Tworzenie powiadomienia.
Działania powiadomień
Chociaż nie jest to wymagane, zalecamy, aby po kliknięciu powiadomienia otwierała się odpowiednia aktywność aplikacji. Oprócz tego domyślnego działania związanego z powiadomieniami możesz dodać przyciski poleceń, które wykonują działanie związane z aplikacją z poziomu powiadomienia – często bez otwierania aktywności – jak pokazano na rys. 8.
Począwszy od Androida 7.0 (interfejs API 24) możesz dodać działanie, aby odpowiedzieć na wiadomości lub wpisać inny tekst bezpośrednio w powiadomieniu.
Począwszy od Androida 10 (poziom interfejsu API 29) platforma może automatycznie generować przyciski akcji z zalecanymi działaniami opartymi na intencjach.
Informacje 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 przez aplikację aktywności lub wysłanie bezpośredniej odpowiedzi, użytkownik musi odblokować urządzenie, zanim aplikacja będzie mogła wywołać to działanie powiadomienia.
W Androidzie 12 (poziom interfejsu API 31) i nowszych możesz skonfigurować działanie powiadomienia, tak aby aplikacja musiała odblokować urządzenie, bez względu na przepływ pracy, który to działanie wykonuje. Ta opcja zapewnia dodatkową ochronę powiadomień na zablokowanych urządzeniach.
Aby wymagać odblokowania urządzenia, zanim aplikacja wywoła daną akcję powiadomienia, podczas tworzenia akcji powiadomienia prześlij parametr true
do funkcji 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();
Powiadomienie rozwijane
Domyślnie treść powiadomienia jest obcinana, aby zmieścić się na jednym wierszu. Jeśli chcesz, aby powiadomienie było dłuższe, możesz włączyć większą obszar tekstu, który można rozwinąć, stosując dodatkowy szablon, jak pokazano na rysunku 9.
Możesz też utworzyć powiadomienie z możliwością rozwinięcia z obrazem, w stylu skrzynki odbiorczej, z rozmową na czacie lub z elementami sterowania odtwarzaniem multimediów. Więcej informacji znajdziesz w artykule Tworzenie powiadomienia rozwijanego.
Aktualizacje powiadomień i grupy
Aby nie zasypywać użytkowników wieloma lub zbędnymi powiadomieniami o nowych aktualizacjach, zaktualizuj istniejące powiadomienie, zamiast wysyłać nowe. Możesz też użyć powiadomienia w stylu skrzynki odbiorczej, aby wyświetlić aktualizacje dotyczące rozmowy.
Jeśli jednak konieczne jest wysłanie wielu powiadomień, rozważ pogrupowanie ich w grupę, która będzie dostępna na Androidzie 7.0 i nowszych.
Grupa powiadomień pozwala połączyć wiele powiadomień w jeden wpis w schowku powiadomień z podsumowaniem. Aby uzyskać więcej informacji, użytkownik może rozwinąć grupę powiadomień i poszczególne powiadomienia w niej, jak pokazano na rysunku 10.
Aby dowiedzieć się, jak dodawać powiadomienia do grupy, przeczytaj artykuł Tworzenie grupy powiadomień.
Kanały powiadomień
Począwszy od Androida 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ć określone kanały powiadomień w aplikacji zamiast wyłączać wszystkie powiadomienia. Użytkownicy mogą kontrolować opcje wizualne i dźwiękowe poszczególnych kanałów 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) lub starszym użytkownicy mogą zarządzać powiadomieniami tylko w poszczególnych aplikacjach. Każda aplikacja ma tylko 1 kanał na Androidzie 7.1 i starszych.
Aplikacja może mieć oddzielne kanały dla każdego typu powiadomień, które powodują jej problemy. 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ł pozwala też określić poziom ważności powiadomień na Androidzie 8.0 i nowszych, więc wszystkie powiadomienia opublikowane w tym samym kanale powiadomień działają tak samo. Zostało to opisane w następnej sekcji.
Więcej informacji znajdziesz w artykule Tworzenie kanałów powiadomień i zarządzanie nimi.
Znaczenie powiadomień
Android określa ważność powiadomienia, aby określić, w jakim stopniu zostało ono zakłócone w sposób wizualny i dźwiękowy dla użytkownika. Im ważniejsze powiadomienie, tym bardziej może zakłócać działanie.
W Androidzie 7.1 (poziom interfejsu API 25) i starszych ważność powiadomienia jest określane przez jego priority
.
W Androidzie 8.0 (poziom interfejsu API 26) lub 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.
Możliwe poziomy ważności i powiązane z nimi zachowania powiadomień:
Pilne: odtwarza dźwięk i wyświetla powiadomienie.
Wysoki: wydaje dźwięk.
Średni poziom: nie słychać dźwięku.
Niski: nie emituje dźwięku i nie pojawia się na pasku stanu.
Wszystkie powiadomienia, niezależnie od ich ważności, pojawiają się w miejscach w interfejsie systemu, które nie przeszkadzają w działaniu systemu, 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 sekcji Ustawianie 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 dla wszystkich powiadomień. Powiadomienia nadal będą się pojawiać w interfejsie systemu zgodnie z ustawieniami użytkownika.
Tryb Nie przeszkadzać ma 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 priorytet: użytkownicy mogą konfigurować, które kategorie systemowe mogą ich przerywać, np. tylko alarmy, przypomnienia, wydarzenia, połączenia lub wiadomości. W przypadku wiadomości i połączeń użytkownicy mogą filtrować je według nadawcy lub dzwoniącego, jak pokazano na rysunku 13.
W Androidzie 8.0 (poziom interfejsu API 26) i nowszych użytkownicy mogą dodatkowo zezwolić na powiadomienia dotyczące kategorii aplikacji (nazywanych też kanałami), zastępując tryb Nie przeszkadzać dla poszczególnych kanałów. Na przykład aplikacja płatnicza może mieć kanały powiadomień o wypłatach i wpłatach. W trybie priorytetowym użytkownik może zezwolić na powiadomienia o wypłatach, wpłatach lub na oba rodzaje.
Na urządzeniach z Androidem 7.1 (poziom interfejsu API 25) lub starszym użytkownicy mogą zezwalać na powiadomienia w poszczególnych aplikacjach, a nie w poszczególnych kanałach.
Aby skonfigurować powiadomienia dla tych ustawień użytkownika, musisz ustawić kategorię systemową.
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 zamknąć tak jak innych powiadomień. Aby usunąć powiadomienie, musisz 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.
Limity postów
Począwszy od Androida 8.1 (poziom interfejsu API 27) aplikacje nie mogą odtwarzać dźwięku powiadomienia częściej niż raz na sekundę. Jeśli aplikacja wysyła kilka powiadomień w ciągu 1 sekundy, wszystkie pojawią się zgodnie z oczekiwaniami, ale tylko pierwsze powiadomienie na sekundę będzie emitować dźwięk.
Android stosuje jednak również limit częstotliwości podczas aktualizowania powiadomienia. Jeśli będziesz publikować aktualizacje powiadomienia zbyt często, np. wiele w ciągu mniej niż sekundy, system może je pomijać.
Zgodność powiadomień
Interfejs użytkownika systemu powiadomień na Androidzie i powiązane z nim interfejsy API są stale ulepszane. Aby korzystać z najnowszych funkcji interfejsu API powiadomień, jednocześnie obsługując starsze urządzenia, użyj interfejsu API powiadomień w bibliotece wsparcia (NotificationCompat
) i jego podklas, a także interfejsu NotificationManagerCompat
.
Dzięki temu nie musisz pisać kodu warunkowego do sprawdzania poziomów interfejsów API, ponieważ te interfejsy API wykonują to za Ciebie.
NotificationCompat
jest aktualizowany wraz z rozwojem platformy, aby uwzględniać najnowsze metody. Dostępność metody w NotificationCompat
nie gwarantuje jednak, że odpowiednia funkcja jest dostępna na starszych urządzeniach. W niektórych przypadkach wywołanie nowo wprowadzonego interfejsu API nie powoduje żadnych działań na starszych urządzeniach.
Poniżej znajdziesz podsumowanie najważniejszych zmian w działaniu powiadomień na Androidzie w poszczególnych poziomach interfejsu API.
Android 5.0, poziom API 21
Wprowadza powiadomienia na ekranie blokady i powiadomienia z poprzednim wyświetleniem.
Umożliwia użytkownikowi ustawienie telefonu w trybie Nie przeszkadzać i skonfigurowanie, które powiadomienia mogą przerywać, gdy urządzenie jest w trybie tylko priorytetowe.
Dodaje metody ustawiania wyświetlania powiadomień na ekranie blokady (np.
setVisibility()
) oraz określania „publicznej” wersji tekstu powiadomienia.Dodaje metodę
setPriority()
, która informuje system, jak bardzo powiadomienie może zakłócić działanie. Na przykład ustawienie priorytetu na wysoki powoduje, że powiadomienie pojawia się jako powiadomienie z ostrzeżeniem.Dodaje obsługę stosów powiadomień na urządzeniach z Androidem Wear (teraz nazywanych Wear OS). Utwórz grupę powiadomień za pomocą
setGroup()
. Stosy powiadomień, które później nazywano grupami lub pakietami, nie są obsługiwane na tabletach i telefonach z Androidem 7.0 (interfejs API na poziomie 24).
Android 7.0, poziom interfejsu API 24
Zmień szablony powiadomień, aby podkreślić obraz bohatera i awatar.
Dodaje 3 szablony powiadomień: jeden dla aplikacji do obsługi wiadomości i 2 inne do ozdabiania widoków treści niestandardowych za pomocą rozwijanego elementu interfejsu i innych elementów systemu.
Dodaje obsługę grup powiadomień na urządzeniach przenośnych, takich jak telefony i tablety. Używa tego samego interfejsu API co grupy powiadomień Android Wear (obecnie WearOS), wprowadzone w Androidzie 5.0 (poziom interfejsu API 21).
Umożliwia użytkownikom odpowiadanie w powiadomieniu za pomocą odpowiedzi w wątku. Mogą wpisać tekst, który jest następnie przekierowywany do aplikacji nadrzędnej powiadomienia.
Android 8.0, poziom API 26
Sprawia, że powiadomienia są umieszczane w określonym kanale.
Użytkownicy mogą wyłączać powiadomienia z poszczególnych kanałów, a nie wszystkie powiadomienia z aplikacji.
Sprawia, że aplikacje z aktywnymi powiadomieniami wyświetlają plakietkę powiadomienia na ikonie aplikacji na ekranie głównym lub w Menu z aplikacjami.
Umożliwia użytkownikom odroczenie powiadomienia z poziomu szuflady. Możesz ustawić automatyczne czasowe wyłączenie powiadomienia.
Pozwala ustawić kolor tła powiadomienia.
Przeniesienie niektórych interfejsów API dotyczących zachowania powiadomień z
Notification
doNotificationChannel
. Na przykład w Androidzie 8.0 lub nowszym użyjNotificationChannel.setImportance()
zamiastNotificationCompat.Builder.setPriority()
.
Android 13.0, poziom 33 interfejsu API
- Dodaje uprawnienia czasu działania. Aby aplikacja mogła wysyłać powiadomienia z wyjątkiem, użytkownik musi przyznać jej to uprawnienie.
Android 14.0, poziom 34 interfejsu API
Ogranicza powiadomienia intencji pełnoekranowej do aplikacji, które umożliwiają wykonywanie połączeń i ustawianie alarmów. Aby sprawdzić, czy Twoja aplikacja ma uprawnienia, użyj interfejsu API
NotificationManager.canUseFullScreenIntent
. 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ą przyznać uprawnienia.Zmiana sposobu wyświetlania powiadomień, które nie można zamknąć, przez umożliwienie użytkownikom zamykania powiadomień, nawet jeśli ustawiony jest flaga
Notification.FLAG_ONGOING_EVENT
. Nie dotyczy to powiadomieńCallStyle
, jeśli ustawiony jest parametrNotification.FLAG_ONGOING_EVENT
lub kontroler zasad urządzenia (DPC) i pakiety obsługujące dla przedsiębiorstw. Nie dotyczy to też sytuacji, gdy telefon jest zablokowany lub użytkownik kliknie Wyczyść wszystko.