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ą prosić 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ód, OEM muszą wprowadzić zmiany w systemach powiadomień i uprawnień dotyczących uprawnień.
Na tej stronie opisano, co muszą zrobić producenci OEM, aby uwzględnić tę zmianę, oraz jak zweryfikować implementację.
Wprowadzanie zmian dotyczących powiadomień o wyrażeniu 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 zgodą użytkownika i opisywane w sekcji Wskazówki dotyczące implementacji.
Sposób działania powiadomień użytkownika w modelu akceptacji
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 starsze niż Android 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 powiadomienie.
Tymczasowe uprawnienia są przyznawane do momentu, gdy aplikacja poprosi o je ponownie podczas pierwszego kwalifikującego się uruchomienia. |
Powiadomienia są dozwolone do momentu wyświetlenia prośby przez system operacyjny.
Tymczasowe uprawnienia są przyznawane do momentu pierwszego uruchomienia aplikacji. |
Wytyczne dotyczące implementacji
Implementację referencyjną znajdziesz w usłudze powiadomień, usłudze uprawnień i usłudze polityki. 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 na Androida 13 lub starsze:
- 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 przez aplikację odpowiedniego prompta, 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 uprawnienia 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 Androida 13 lub nowszej, jeśli użytkownik nie dostosowywał wcześniej ustawień powiadomień dotyczących tej aplikacji na poziomie aplikacji lub
NotificationChannel
, unieważnij tymczasowe uprawnienia. 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ć jakiekolwiek 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ą flagiFLAG_PERMISSION_USER_SET
. Użytkownik nie musi otrzymywać żadnych dalszych próśb o zgodę na wyświetlanie powiadomień, chyba że aplikacja o to poprosi.
Tworzenie i przywracanie kopii zapasowej musi być zgodne wstecz i do przodu między urządzeniem z Androidem 13 a urządzeniem z wcześniejszej wersji 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:
testy jednostkowe określone w
PreferencesHelperTest
,NotificationManagerServiceTest
Każdy ręczny test, który sprawdza uaktualnienia oraz tworzenie i przywracanie kopii zapasowej.
Każdy test systemu CTS Permission and Notification, który wysyła powiadomienia. Niektóre z tych testów znajdują się w folderach cts/tests/tests/permission/, NotificationManagerTest.java i cts/tests/tests/notificationlegacy/.