Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Zgoda na wyświetlanie powiadomień w przypadku powiadomień z wyrażeniem zgody
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Powiadomienia w Androidzie 13 korzystają z modelu opt-in, co stanowi zmianę w porównaniu z poprzednimi wersjami Androida, które używały modelu opt-out. Na Androidzie 13 wszystkie aplikacje muszą poprosić użytkowników o zgodę przed wysłaniem powiadomień. Ten model pomaga ograniczyć przerywanie powiadomień, zminimalizować nadmiar informacji i pomaga użytkownikom kontrolować wyświetlanie powiadomień na podstawie tego, co jest dla nich ważne. Aby obsługiwać model zgłaszania, OEM muszą wprowadzić zmiany w systemach powiadomień i uprawnień dotyczących uprawnień.
Na tej stronie opisano, co muszą wdrożyć producenci OEM, aby obsługiwać tę zmianę, oraz jak zweryfikować implementację.
Wprowadzanie zmian dotyczących powiadomień z wymaganiem zgody
Od Androida 13 aplikacje muszą deklarować zamiar wysyłania powiadomień, prosząc system o udzielenie uprawnienia na czas działania android.permission.POST_NOTIFICATION
, zanim będą mogły wysyłać powiadomienia.
Na Androidzie 13 i nowszych ustawienie określające, czy aplikacja może wysyłać powiadomienia do użytkownika, jest przechowywane w systemie uprawnień.
Przed Androidem 13 to ustawienie było przechowywane w systemie powiadomień. Dlatego producenci OEM muszą przenieść istniejące dane powiadomień dotyczące tego, czy aplikacja może wysyłać powiadomienia, z systemu powiadomień do systemu uprawnień w czasie działania. Producenci OEM muszą też utrzymywać istniejące interfejsy API w systemie powiadomień, który udostępnia te dane deweloperom aplikacji.
Zmiany w systemach powiadomień i uprawnień są oparte na modelu powiadomień z wymagana zgody użytkownika i opisywane w sekcji Wskazówki dotyczące implementacji.
Zachowanie powiadomień w modelu z wyrażeniem zgody
W tabeli poniżej przedstawiono zachowanie powiadomień w różnych wersjach aplikacji na urządzeniu z Androidem 13:
urządzenie z Androidem 13, |
Aplikacje kierowane na Androida 13 lub nowszego |
Aplikacje kierowane na wersje Androida starsze niż 13 |
Nowa instalacja
|
Powiadomienia są blokowane do momentu wyświetlenia przez aplikację odpowiedniego prompta.
Aplikacje decydują, kiedy prosić o uprawnienia.
|
Powiadomienia są blokowane do momentu wyświetlenia prośby przez system operacyjny.
Uprawnienia są wymagane przy pierwszym uruchomieniu aplikacji.
|
Opublikowana aplikacja (uaktualnienie)
|
Powiadomienia są dozwolone, dopóki aplikacja nie poprosi o je wydanie.
Tymczasowe uprawnienia są przyznawane do momentu, gdy aplikacja poprosi o je na pierwszym spełniającym kryteria uruchomieniu.
|
Powiadomienia są dozwolone do momentu wyświetlenia prośby przez system operacyjny.
Tymczasowe uprawnienia są przyznawane do momentu pierwszego uruchomienia aplikacji.
|
Wskazówki dotyczące implementacji
Aby zapoznać się z implementacją referencyjną, zobacz usługę powiadomień, usługę dotyczącą uprawnień i usługę dotyczącą zasad. Aby zaimplementować wyjątki dla domyślnych modułów obsługi uprawnień, zapoznaj się z artykułem Uprawnienia czasu działania.
Podczas implementacji postępuj zgodnie z tymi wytycznymi dotyczącymi zachowania powiadomień dla użytkowników w przypadku aplikacji kierowanych na pakiety SDK do Androida 13 lub starszego:
- Nowo zainstalowane aplikacje na urządzeniu z Androidem 13 nie mogą wysyłać powiadomień bez zgody użytkownika.
- Jeśli aplikacja jest kierowana na Androida 13 lub nowszego, powiadomienia muszą być blokowane do momentu wyświetlenia odpowiedniego promptu, ponieważ to aplikacja decyduje, kiedy i czy prosić o zgodę użytkownika.
- Jeśli aplikacja jest kierowana na wersje starsze niż Android 13, powiadomienia muszą być blokowane do momentu wyświetlenia przez system operacyjny odpowiedniego prompta. System operacyjny musi wyświetlić prośbę o przyznanie uprawnień przy pierwszym uruchomieniu aplikacji.
Każda aplikacja, która była obecna na urządzeniu przed uaktualnieniem do Androida 13, lub każda aplikacja przywrócona z kopii zapasowej, musi mieć uprawnienia do wysyłania powiadomień do momentu, gdy użytkownik uruchomi działanie z tej aplikacji.
W przypadku aplikacji kierowanych na pakiet SDK w wersji 13 lub nowszej, jeśli użytkownik nie dostosował wcześniej ustawień powiadomień dla tej aplikacji na poziomie aplikacji lub NotificationChannel
, cofnij tymczasowe przyznanie uprawnień. Aplikacje muszą poprosić użytkownika o pozwolenie, zanim będą mogły wysyłać powiadomienia.
Jeśli uaktualniona aplikacja kierowana na Androida 13 nie ma obecnie uprawnień do wysyłania powiadomień na podstawie tymczasowego przyznania uprawnień i użytkownik uruchomił ją co najmniej raz, aplikacja musi wyświetlić prośbę o uprawnienia do wysyłania powiadomień, zanim będzie mogła uruchomić kolejne usługi na pierwszym planie.
W przypadku aplikacji, których docelowy pakiet SDK jest starszy niż Android 13, przechwytywanie pierwszego uruchomienia aktywności po utworzeniu przez aplikację co najmniej 1 NotificationChannel
, aby wyświetlić prośbę o uprawnienia z pytaniem, czy użytkownik chce otrzymywać powiadomienia z aplikacji.
Jeśli użytkownik wcześniej dostosował ustawienia powiadomień na poziomie aplikacji lub NotificationChannel
w aplikacji na urządzeniu, które jest aktualizowane, lub w kopii zapasowej przywracanej na urządzenie, ustawienia na poziomie aplikacji należy przenieść do systemu uprawnień za pomocą flagi FLAG_PERMISSION_USER_SET
. Użytkownik nie powinien widzieć żadnych dodatkowych próśb o zgodę na wyświetlanie powiadomień, chyba że aplikacja wyraźnie o to poprosi.
Tworzenie i przywracanie kopii zapasowej musi być zgodne wstecz i wstecz między urządzeniem z Androidem 13 a urządzeniem z wcześniejszą wersją systemu operacyjnego. Dane kopii zapasowej utworzonej na urządzeniu z Androidem 13 muszą zostać przywrócone na wcześniejszą wersję systemu operacyjnego, a dane z kopii zapasowej utworzonej na wcześniejszej wersji systemu operacyjnego muszą zostać przywrócone na urządzenie z Androidem 13.
Powiadomienia multimedialne związane z trwającym odtwarzaniem multimediów muszą być wyłączone z uprawnień dotyczących powiadomień.
weryfikować zmiany w systemach powiadomień i uprawnień.
Aby sprawdzić implementację, uruchom te testy:
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Notification permission for opt-in notifications\n\nNotifications in Android 13 use an opt-in model, which\nis a change from previous Android versions, which use an opt-out model. In\nAndroid 13, all apps must ask users for permission before\nsending notification prompts. This model helps reduce notification\ninterruptions, minimizes information overload, and helps users control what\nnotifications appear based on what's important to them. To support the\nopt-in model, OEMs must implement changes in the notification and runtime\npermission systems.\n\nThis page describes what OEMs must implement to support this change and how\nto validate the implementation.\n\nImplement changes for opt-in notifications\n------------------------------------------\n\nStarting with Android 13, apps must declare their\nintent to send notifications by requesting the\n[`android.permission.POST_NOTIFICATION`](https://developer.android.com/about/versions/13/changes/notification-permission)\nruntime permission from the system before they can send notifications.\n\nIn Android 13 and higher, the setting that determines\nif an app can send notifications to the user is stored in the permission system.\nPrior to Android 13, this setting was stored in the\nnotification system. Hence, OEMs must migrate the existing notification data\nabout whether an app is allowed to send notifications, from the notification\nsystem into the runtime permission system. OEMs must also maintain existing APIs\nin the notification system that surface that data to app developers.\n\nChanges to the notification and permission systems are based on the\n[opt-in model of user notification behavior](#behavior-optin) and are\ndescribed in the [Guidelines for implementation](#guidelines-impl) section.\n\n### Behavior of user notifications in an opt-in model\n\nThe following table illustrates the notification behavior for various app\nversions on a device running Android 13:\n\n| Device on Android 13 | Apps targeting Android 13 or higher | Apps targeting versions lower than Android 13 |\n|------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| New install | Notifications are blocked until prompted by the app. Apps control when to ask for permission. | Notifications are blocked until prompted by the OS. Permission is asked on the first run of the app. |\n| Existing app (upgrade) | Notifications are allowed until prompted by the app. Temporary permission is granted until the app asks on the first qualifying run. | Notifications are allowed until prompted by the OS. Temporary permission is granted until the first run of the app. |\n\n### Guidelines for implementation\n\nFor reference implementation, refer to\n[notification service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/notification/),\n[permission service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/pm/permission/) and\n[policy service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/policy). To implement exceptions\nfor default permission handlers see\n[Runtime Permissions](/docs/core/permissions/runtime_perms#integration).\n\nDuring implementation, use the following guidelines on user notification\nbehavior for apps targeting Android 13 or lower SDKs:\n\n- Freshly installed apps on an Android 13 device must not send a notification without the user approving a permission prompt.\n - If the app targets versions Android 13 and higher, notifications must be blocked until prompted by the app as the app controls when and if to ask for user permission.\n - If the app targets versions lower than Android 13, notifications must be blocked until prompted by the OS. The OS must show the permission prompt on the first run of the app.\n- Any app that existed on the device prior to an upgrade to\n Android 13, or any app that was restored through backup\n and restore, must be allowed to send notifications until the first time the user\n launches an activity from that app.\n\n - For apps that target SDK of versions Android 13\n and higher, if the user hasn't previously customized notification settings for\n this app at the app or `NotificationChannel` level, revoke the temporary\n permission grant. Apps must then ask the user for permission before being\n allowed to continue to send notifications.\n\n If an upgraded app targeting Android 13 doesn't\n currently have the notification permission through the temporary upgrade\n grant, and the user has launched it at least once, the app must show a\n notification permission prompt before it's allowed to run any further foreground\n services.\n - For apps that have a target SDK of versions lower than\n Android 13,\n [intercept](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/wm/ActivityInterceptorCallback.java)\n the first activity launch after the app has created at least one `NotificationChannel`\n to show a permission prompt asking if the user wants to receive notifications\n from the app.\n\n If a user previously customized notification settings at the\n app or `NotificationChannel` level for an app on the upgrading device or in a\n backup being restored to the device, the app level setting must be migrated into\n the permission system with the `FLAG_PERMISSION_USER_SET` flag. No further\n notification permission prompt must be shown to the user unless the app\n specifically asks it to be.\n- Backup and restore must be backward and forward compatible between an\n Android 13 device and a device from an earlier OS\n version. Backup data generated from an Android 13\n device must restore onto an earlier OS version, and backup data from an earlier\n OS version must restore onto an Android 13 device.\n\n- Media notifications associated with ongoing media playback must be exempt\n from the notification permission.\n\nValidate changes to the notification and permission systems\n-----------------------------------------------------------\n\nTo validate the implementation, run the following tests:\n\n- Unit tests as specified in [`PreferencesHelperTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java),\n [`NotificationManagerServiceTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java).\n\n- Any manual test that tests upgrades and backup and restore.\n\n- Any CTS Permission and Notification system test that sends notifications.\n Some of these tests are located in [cts/tests/tests/permission/](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Permission/tests/cts/permission/src/android/permission/cts/),\n [NotificationManagerTest.java](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notification/src/android/app/notification/current/cts/NotificationManagerTest.java?q=NotificationManagerTest.java),\n and [cts/tests/tests/notificationlegacy/](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notificationlegacy/)."]]