Powiadomienia w Androidzie 13 korzystają z modelu zgody użytkownika, co jest zmianą w porównaniu z poprzednimi wersjami Androida, które korzystały z modelu rezygnacji. W Androidzie 13 wszystkie aplikacje muszą prosić użytkowników o zezwolenie przed wysłaniem prośby o powiadomienie. Ten model pomaga ograniczyć liczbę powiadomień, zminimalizować nadmiar informacji i umożliwia użytkownikom kontrolowanie, które powiadomienia się wyświetlają, na podstawie tego, co jest dla nich ważne. Aby obsługiwać model zgody użytkownika, producenci OEM muszą wprowadzić zmiany w systemach powiadomień i uprawnień w czasie działania.
Na tej stronie opisujemy, co producenci OEM muszą wdrożyć, aby obsługiwać tę zmianę, oraz jak sprawdzić wdrożenie.
Wprowadzanie zmian w przypadku powiadomień wymagających zgody użytkownika
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 wersjach ustawienie, które określa, czy aplikacja może wysyłać powiadomienia do użytkownika, jest przechowywane w systemie uprawnień. W wersjach Androida starszych niż 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ć w systemie powiadomień istniejące interfejsy API, które udostępniają te dane deweloperom aplikacji.
Zmiany w systemach powiadomień i uprawnień są oparte na modelu zgody użytkownika na powiadomienia i są opisane w sekcji Wytyczne dotyczące wdrażania.
Zachowanie powiadomień użytkownika w modelu opartym na wyrażeniu zgody
W tabeli poniżej przedstawiono działanie powiadomień w przypadku różnych wersji 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, gdy aplikacja o nie poprosi.
Aplikacje określają, kiedy poprosić o uprawnienia. |
Powiadomienia są blokowane do momentu, gdy system operacyjny o nie poprosi.
O pozwolenie prosimy przy pierwszym uruchomieniu aplikacji. |
Opublikowana aplikacja (uaktualnienie) | Powiadomienia są dozwolone, dopóki aplikacja nie poprosi o ich wyłączenie.
Uprawnienia tymczasowe są przyznawane do momentu, gdy aplikacja poprosi o nie podczas pierwszego kwalifikującego się uruchomienia. |
Powiadomienia są dozwolone, dopóki system operacyjny nie poprosi o zgodę na ich wyświetlanie.
Uprawnienia tymczasowe są przyznawane do pierwszego uruchomienia aplikacji. |
Wskazówki dotyczące implementacji
W celu uzyskania implementacji referencyjnej zapoznaj się z usługą powiadomień, usługą uprawnień i usługą zasad. Aby wdrożyć wyjątki dla domyślnych modułów obsługi uprawnień, zapoznaj się z sekcją Uprawnienia czasu działania.
Podczas wdrażania postępuj zgodnie z tymi wytycznymi dotyczącymi zachowania powiadomień użytkownika w przypadku aplikacji kierowanych na pakiety SDK w Androidzie 13 lub starszym:
- Nowo zainstalowane aplikacje na urządzeniu z Androidem 13 nie mogą wysyłać powiadomień bez zatwierdzenia przez użytkownika prośby o zezwolenie.
- Jeśli aplikacja jest kierowana na Androida 13 lub nowszego, powiadomienia muszą być blokowane do momentu, gdy aplikacja o nie poprosi, ponieważ to ona kontroluje, kiedy i czy ma prosić użytkownika o zezwolenie.
- Jeśli aplikacja jest przeznaczona na wersje starsze niż Android 13, powiadomienia muszą być blokowane do momentu wyświetlenia prośby przez system operacyjny. System operacyjny musi wyświetlić prośbę o przyznanie uprawnień przy pierwszym uruchomieniu aplikacji.
Każda aplikacja, która była na urządzeniu przed uaktualnieniem do Androida 13, lub każda aplikacja, która została przywrócona z kopii zapasowej, musi mieć możliwość wysyłania powiadomień do momentu, w którym użytkownik po raz pierwszy uruchomi działanie z tej aplikacji.
W przypadku aplikacji, które są przeznaczone na pakiet SDK w wersji Androida 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ą następnie poprosić użytkownika o zgodę, zanim będą mogły nadal wysyłać powiadomienia.Jeśli uaktualniona aplikacja kierowana na Androida 13 nie ma obecnie uprawnień do wysyłania powiadomień w ramach tymczasowego przyznania uprawnień w procesie uaktualniania, a użytkownik uruchomił ją co najmniej raz, aplikacja musi wyświetlić prośbę o przyznanie uprawnień do wysyłania powiadomień, zanim będzie mogła uruchomić kolejne usługi działające na pierwszym planie.
W przypadku aplikacji, których docelowy pakiet SDK ma wersję starszą niż Android 13, przechwyć pierwsze uruchomienie aktywności po utworzeniu przez aplikację co najmniej jednego
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
dla aplikacji na urządzeniu, na którym przeprowadzana jest aktualizacja, lub w kopii zapasowej przywracanej na urządzenie, ustawienie na poziomie aplikacji musi zostać przeniesione do systemu uprawnień z flagąFLAG_PERMISSION_USER_SET
. Użytkownikowi nie można wyświetlać kolejnych próśb o uprawnienia do powiadomień, chyba że aplikacja wyraźnie o to poprosi.
Tworzenie i przywracanie kopii zapasowej musi być wstecznie i w przód kompatybilne między urządzeniem z Androidem 13 a urządzeniem z wcześniejszą wersją systemu operacyjnego. Kopie zapasowe danych wygenerowanych na urządzeniu z Androidem 13 muszą być przywracane na urządzeniu ze starszą wersją systemu operacyjnego, a kopie zapasowe danych ze starszej wersji systemu operacyjnego muszą być przywracane na urządzeniu z Androidem 13.
Powiadomienia o multimediach związane z trwającym odtwarzaniem multimediów muszą być zwolnione z uprawnień do powiadomień.
Weryfikowanie zmian w systemach powiadomień i uprawnień
Aby sprawdzić wdrożenie, przeprowadź te testy:
Testy jednostkowe zgodnie z dokumentami
PreferencesHelperTest
iNotificationManagerServiceTest
.Każdy test ręczny, który sprawdza uaktualnienia oraz tworzenie i przywracanie kopii zapasowych.
Każdy test systemowy 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/.