Powiadomienie to wiadomość wyświetlana przez Androida poza interfejsem aplikacji, która przypomina użytkownikowi o czymś, informuje go o komunikacji z innymi osobami lub zawiera 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ń:
- Tworzenie powiadomienia: dowiedz się, jak utworzyć i wysłać podstawowe powiadomienie.
- Zgoda na wyświetlanie powiadomień:
dowiedz się, jak obsługiwać
POST_NOTIFICATIONSuprawnienia w czasie działania (aplikacji). - Kanały powiadomień: umożliwiają użytkownikom kontrolowanie zachowania powiadomień.
- Rozwijane powiadomienia:
wyświetlaj więcej treści za pomocą stylów takich jak
BigTextStylelubMessagingStyle. - Dymki: używaj pływających, rozwijanych nakładek do rozmów.
- Powiadomienia dotyczące postępu: śledź podróże inicjowane przez użytkowników, takie jak przejazdy i dostawy.
- Powiadomienia w stylu połączeń: odróżniaj połączenia przychodzące i trwające od innych typów powiadomień.
- Powiadomienia o aktualizacjach na żywo: śledź postępy w trwających działaniach.
- Przewodniki po powiadomieniach dotyczących widoków: przewodniki dotyczące implementowania powiadomień w aplikacjach opartych na widokach.
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.
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.
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.
Użytkownicy mogą przeciągnąć powiadomienie w obszarze powiadomień w dół, aby wyświetlić rozszerzony widok, który zawiera dodatkowe treści i przyciski działań (jeśli są dostępne). W Androidzie 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ć. Wyświetlają się one tylko wtedy, gdy urządzenie jest odblokowane.
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 powiadomień 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 systemowych 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 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. Mogą je odrzucić lub wykonać działania z poziomu tego menu, podobnie jak w przypadku obszaru powiadomień.
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 odpowiedzi głosowe wprowadzanie tekstu. Więcej informacji znajdziesz w artykule Dodawanie do powiadomienia funkcji specyficznych dla urządzeń do noszenia.
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 rozwiniętym widoku.
Najczęstsze części powiadomienia są wskazane na rysunku 7:
- Mała ikona: wymagana; ustawiana za pomocą
setSmallIcon(). - Nazwa aplikacji: podawana przez system.
- Sygnatura czasowa: podawana przez system, ale możesz ją zastąpić za pomocą
setWhen()lub ukryć za pomocąsetShowWhen(false). - Duża ikona: opcjonalna; zwykle używana tylko w przypadku zdjęć kontaktów.
Nie używaj jej jako ikony aplikacji. Ustawiana za pomocą
setLargeIcon(). - Tytuł: opcjonalny; ustawiany za pomocą
setContentTitle(). - 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 tym, jak utworzyć powiadomienie 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.
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 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 dodaje dodatkową warstwę zabezpieczeń 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.
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.
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 systemowych Androida, jak pokazano na rysunku 11. 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 każda aplikacja ma tylko 1 kanał.
Aplikacja może mieć osobne kanały dla każdego typu powiadomienia. 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 kanale określasz też poziom 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 systemowych, 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 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 systemowego, 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 systemowym 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.
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 płatnicza 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ę wrażeń użytkowników w przypadku powiadomień przychodzących w szybkim tempie. Ta funkcja zmniejsza częstotliwość wyświetlania, głośność dźwięku 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 wibracji, aby przyciągnąć uwagę. Użytkownik może wyłączyć wyciszanie powiadomień w Ustawieniach.