Powiadomienie to komunikat, który Android wyświetla poza interfejsem aplikacji, aby przekazać użytkownikowi przypomnienia, wiadomości 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 poziomu powiadomienia.
Na tej stronie znajdziesz omówienie miejsc, w których pojawiają się powiadomienia, oraz dostępnych funkcji.
Przewodniki po implementacji
Z tych przewodników dowiesz się, jak wdrożyć w aplikacji różne funkcje powiadomień:
- Tworzenie powiadomienia: dowiedz się, jak utworzyć i wyświetlić podstawowe powiadomienie.
- Zgoda na wyświetlanie powiadomień: dowiedz się, jak obsługiwać uprawnienia w czasie działania aplikacji
POST_NOTIFICATIONS. - Kanały powiadomień: pozwalają użytkownikom kontrolować zachowania powiadomień.
- Powiadomienia rozwijane:
wyświetlaj więcej treści, używając stylów takich jak
BigTextStylelubMessagingStyle. - Dymki: używaj pływających, rozwijanych nakładek do rozmów.
- Powiadomienia o postępach: śledzenie podróży rozpoczętych przez użytkownika, takich jak przejazdy i dostawy.
- Powiadomienia w stylu połączenia: 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 aktywnościach.
- Przewodniki po powiadomieniach dotyczących widoków: przewodniki po wdrażaniu powiadomień w aplikacjach opartych na widokach.
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 miejscach i formatach. Powiadomienie pojawia się jako ikona na pasku stanu, bardziej szczegółowy wpis w panelu powiadomień i plakietka na ikonie aplikacji.
uwzględnianie działań użytkowników na różnych urządzeniach,
Powiadomienia domyślnie pojawiają 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 o zakończeniu pobierania multimediów. Więcej wskazówek dotyczących powiadomień na Wear OS znajdziesz w artykule Powiadomienia na Wear OS.
Pasek stanu i panel powiadomień
Gdy wysyłasz powiadomienie, najpierw pojawia się ono jako ikona na pasku stanu.
Użytkownicy mogą przesunąć palcem w dół po pasku stanu, aby otworzyć panel powiadomień, w którym mogą wyświetlić więcej szczegółów i podjąć działania związane z powiadomieniem.
Użytkownicy mogą przeciągnąć powiadomienie w szufladzie w dół, aby wyświetlić widok rozwinięty, który zawiera dodatkowe treści i przyciski poleceń (jeśli są dostępne). Od Androida 13 ten rozwinięty widok zawiera przycisk, który umożliwia użytkownikom zatrzymanie aplikacji, która ma aktywne usługi 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ą pojawiać się na krótko w pływającym oknie, które nazywa się powiadomieniem z ostrzeżeniem. To zachowanie jest zwykle stosowane w przypadku ważnych powiadomień, o których użytkownik musi natychmiast wiedzieć, i pojawia się tylko wtedy, gdy urządzenie jest odblokowane.
Powiadomienie z ostrzeżeniem pojawia się, gdy aplikacja wysyła powiadomienie. Po chwili znika, ale pozostaje widoczna w obszarze powiadomień.
Warunki, które mogą powodować wyświetlanie powiadomień z ostrzeżeniem, to m.in.:
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 (interfejs API na poziomie 25) lub starszym.
Kanał powiadomień ma wysoki priorytet na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub 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 z jakim poziomem szczegółowości.
Użytkownicy mogą wybrać w ustawieniach systemowych poziom szczegółowości powiadomień na ekranie blokady lub całkowicie je wyłączyć. 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 o ustawianiu 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 wskazują nowe powiadomienia za pomocą kolorowej plakietki, czyli kropki powiadomienia, na odpowiedniej ikonie programu uruchamiającego aplikację.
Użytkownicy mogą nacisnąć i przytrzymać ikonę aplikacji, aby zobaczyć powiadomienia z tej aplikacji. W tym menu mogą odrzucać powiadomienia lub podejmować działania, podobnie jak w panelu 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 pojawiają się na nim automatycznie, w tym rozwijane szczegóły i przyciski poleceń.
Możesz ulepszyć działanie aplikacji, 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 powiadomień funkcji przeznaczonych na urządzenia 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 widoku rozwiniętym.
Najczęstsze elementy powiadomienia są pokazane na rysunku 7:
- Mała ikona: wymagana; ustawiana za pomocą
setSmallIcon(). - Nazwa aplikacji: podana 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 go w ikonie aplikacji. Ustaw 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 powiadomień.
Więcej informacji o tworzeniu powiadomień z tymi i innymi funkcjami znajdziesz w artykule Tworzenie powiadomienia.
Działania powiadomień
Chociaż nie jest to wymagane, dobrą praktyką jest, aby każde powiadomienie po kliknięciu otwierało odpowiednią aktywność w aplikacji. Oprócz tego domyślnego działania powiadomienia możesz dodać przyciski poleceń, które wykonują zadanie związane z aplikacją z poziomu powiadomienia – często bez otwierania aktywności – jak pokazano na rysunku 8.
Od Androida 7.0 (poziom interfejsu API 24) możesz dodać działanie, aby odpowiadać na wiadomości lub wpisywać inny tekst bezpośrednio z powiadomienia.
Od Androida 10 (poziom API 29) platforma może automatycznie generować przyciski poleceń z sugerowanymi działaniami opartymi na intencjach.
Dodawanie przycisków poleceń zostało opisane w artykule Tworzenie powiadomienia.
Wymaganie odblokowania urządzenia
Użytkownicy mogą zobaczyć działania związane z powiadomieniami 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.
Na Androidzie 12 (poziom interfejsu API 31) i nowszych możesz skonfigurować działanie powiadomienia w taki sposób, aby urządzenie musiało być odblokowane, żeby aplikacja mogła wywołać to działanie, niezależnie od tego, jaki przepływ pracy ono uruchamia. Ta opcja zapewnia dodatkową warstwę zabezpieczeń powiadomień na zablokowanych urządzeniach.
Aby wymagać odblokowania urządzenia, zanim aplikacja wywoła określone działanie związane z powiadomieniem, podczas tworzenia działania przekaż 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()
Powiadomienie rozwijane
Domyślnie treść powiadomienia jest skracana, aby zmieściła 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ć powiadomienie rozwijane 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 powiadomienia rozwijanego.
Aktualizacje i grupy powiadomień
Aby uniknąć zalewania użytkowników wieloma powiadomieniami lub powiadomieniami nadmiarowymi, gdy masz dodatkowe aktualizacje, zaktualizuj istniejące powiadomienie, zamiast wysyłać nowe, lub użyj powiadomienia w stylu skrzynki odbiorczej, aby wyświetlać aktualizacje rozmowy.
Jeśli jednak musisz dostarczyć kilka powiadomień, rozważ połączenie ich w grupę (funkcja dostępna na Androidzie 7.0 i nowszych).
Grupa powiadomień umożliwia zwinięcie wielu powiadomień w jeden post w panelu powiadomień z podsumowaniem. Użytkownik może stopniowo rozwijać grupę powiadomień i poszczególne powiadomienia, aby zobaczyć 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ń
Na Androidzie 8.0 (interfejs API na poziomie 26) i nowszych wersjach wszystkie powiadomienia muszą być przypisane do kanału, inaczej nie będą się wyświetlać. Dzięki temu użytkownicy mogą wyłączyć określone 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 (interfejs API na poziomie 25) lub starszym użytkownicy mogą zarządzać powiadomieniami tylko na poziomie aplikacji. Na Androidzie 7.1 i starszych każda aplikacja ma tylko 1 kanał.
Aplikacja może mieć osobne kanały dla każdego typu powiadomień, które wysyła. Aplikacja może też tworzyć kanały powiadomień w odpowiedzi na wybory dokonane przez 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.
W kanale określasz też poziom ważności powiadomień na Androidzie 8.0 i nowszych, dzięki czemu wszystkie powiadomienia opublikowane w tym samym kanale powiadomień zachowują się 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.
Ważność powiadomienia
Android wykorzystuje ważność powiadomienia, aby określić, jak bardzo powiadomienie przeszkadza użytkownikowi wizualnie i dźwiękowo. Im wyższy priorytet powiadomienia, tym bardziej jest ono uciążliwe.
Na urządzeniach z Androidem 7.1 (interfejs API na poziomie 25) lub starszym ważność powiadomienia jest określana przez priority powiadomienia.
Na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym ważność powiadomienia jest określana przez importance kanału, na którym jest ono publikowane. Użytkownicy mogą zmienić 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 pojawia się jako powiadomienie z ostrzeżeniem.
Wysoki: odtwarza dźwięk.
Średni: nie wydaje dźwięku.
Niski: nie wydaje dźwięku i nie pojawia się na pasku stanu.
Wszystkie powiadomienia, niezależnie od ich ważności, pojawiają się w niezakłócających pracy miejscach interfejsu systemu, takich jak panel powiadomień i 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ć
Na Androidzie 5.0 (interfejs API na poziomie 21) i nowszych wersjach użytkownicy mogą włączyć tryb Nie przeszkadzać, który wycisza dźwięk i wibracje w przypadku wszystkich powiadomień. Powiadomienia nadal będą się pojawiać w interfejsie systemu, 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ślić, 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 rozmówcy, jak pokazano na rysunku 13.
Na Androidzie 8.0 (poziom interfejsu API 26) i nowszych użytkownicy mogą dodatkowo zezwalać na powiadomienia w kategoriach aplikacji (nazywanych też kanałami), zastępując tryb Nie przeszkadzać w poszczególnych kanałach. Na przykład aplikacja do 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, wpłatach lub obu tych operacjach.
Na urządzeniach z Androidem 7.1 (interfejs API na poziomie 25) lub starszym użytkownicy mogą zezwalać na powiadomienia na poziomie aplikacji, a nie kanału.
Aby skonfigurować powiadomienia dla tych ustawień użytkownika, musisz ustawić kategorię dla całego systemu.
Powiadomienia dotyczące usług działających na pierwszym planie
Powiadomienie jest wymagane, gdy aplikacja działa jako usługa na pierwszym planie – Service działająca w tle, która jest długotrwała i zauważalna dla użytkownika, np. odtwarzacz multimedialny. Tego powiadomienia nie można odrzucić tak jak innych. Aby usunąć powiadomienie, musisz zatrzymać usługę lub usunąć ją z pierwszego planu.
Więcej informacji znajdziesz w artykule o usługach na pierwszym planie. Jeśli tworzysz odtwarzacz multimediów, przeczytaj też artykuł Odtwarzanie multimediów w tle.
Zachowania powiadomień
Android 16.0, poziom 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 kilkoma powiadomieniami podrzędnymi;
Android 15.0, poziom interfejsu API 35
Wyciszanie
Android 15 wprowadza funkcję wyciszania powiadomień, która ma na celu poprawę komfortu korzystania z powiadomień, które pojawiają się w krótkich odstępach czasu. Ta funkcja zmniejsza widoczność, głośność i intensywność wibracji powtarzających się powiadomień przez maksymalnie 2 minuty.
Powiadomienia krytyczne, które wymagają dźwięku i reakcji haptycznych, aby zwrócić uwagę, nie podlegają wyciszeniu. Użytkownik może wyłączyć wyciszanie powiadomień w Ustawieniach.