W Androidzie 13 powiadomienia działają w modelu wyrażania zgody, który różni się od modelu rezygnacji stosowanego w poprzednich wersjach Androida. W Androidzie 13 wszystkie aplikacje muszą prosić użytkowników o zgodę przed wysłaniem prośby o powiadomienie. Ten model pomaga ograniczyć przerywanie powiadomieniami, minimalizuje przeciążenie informacjami i pozwala użytkownikom kontrolować, które powiadomienia się wyświetlają, na podstawie tego, co jest dla nich ważne. Aby obsługiwać model wyrażania zgody, producenci OEM muszą wprowadzić zmiany w systemach powiadomień i uprawnień czasu działania.
Na tej stronie opisujemy, co producenci OEM muszą zaimplementować, aby obsługiwać tę zmianę, oraz jak sprawdzić jej wdrożenie.
Wprowadzanie zmian w przypadku powiadomień wymagających zgody
Od Androida 13 aplikacje muszą deklarować zamiar wysyłania powiadomień
prosząc system o uprawnienie czasu działania android.permission.POST_NOTIFICATION, zanim będą mogły wysyłać powiadomienia.
W Androidzie 13 i nowszych ustawienie określające, 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ń czasu działania. Producenci OEM muszą też zachować istniejące interfejsy API w systemie powiadomień, które udostępniają te dane programistom aplikacji.
Zmiany w systemach powiadomień i uprawnień są oparte na modelu wyrażania zgody na zachowanie użytkownika w zakresie powiadomień i są opisane w sekcji Wskazówki dotyczące implementacji.
Zachowanie powiadomień użytkownika w modelu wyrażania zgody
W tabeli poniżej przedstawiamy zachowanie 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, aż aplikacja poprosi o zgodę.
Aplikacje kontrolują, kiedy poprosić o zgodę. |
Powiadomienia są blokowane do momentu, aż system operacyjny poprosi o zgodę.
Zgoda jest wymagana przy pierwszym uruchomieniu aplikacji. |
| Opublikowana aplikacja (uaktualnienie) | Powiadomienia są dozwolone do momentu, aż aplikacja poprosi o zgodę.
Tymczasowe uprawnienie jest przyznawane do momentu, aż aplikacja poprosi o zgodę przy pierwszym kwalifikującym się uruchomieniu. |
Powiadomienia są dozwolone do momentu, aż system operacyjny poprosi o zgodę.
Tymczasowe uprawnienie jest przyznawane do momentu pierwszego uruchomienia aplikacji. |
Wskazówki dotyczące implementacji
W przypadku implementacji referencyjnej zapoznaj się z usługą powiadomień, usługą uprawnień i usługą zasad. Aby zaimplementować wyjątki dla domyślnych obsługi uprawnień, zapoznaj się z uprawnieniami czasu działania.
Podczas implementacji postępuj zgodnie z tymi wskazówkami dotyczącymi zachowania użytkownika w zakresie powiadomień w przypadku aplikacji kierowanych na Androida 13 lub starsze wersje pakietu SDK:
- Nowo zainstalowane aplikacje na urządzeniu z Androidem 13 nie mogą wysyłać powiadomień bez zgody użytkownika na prośbę o uprawnienia.
- Jeśli aplikacja jest kierowana na Androida 13 lub nowszego, powiadomienia muszą być blokowane do momentu, aż aplikacja poprosi o zgodę użytkownika, ponieważ to ona kontroluje, kiedy i czy poprosić użytkownika o zgodę.
- Jeśli aplikacja jest kierowana na wersje starsze niż Android 13, powiadomienia muszą być blokowane do momentu, aż system operacyjny poprosi o zgodę. System operacyjny musi wyświetlić prośbę o uprawnienia przy pierwszym uruchomieniu aplikacji.
Każda aplikacja, która była zainstalowana na urządzeniu przed uaktualnieniem do Androida 13, lub każda aplikacja, która została przywrócona za pomocą kopii zapasowej, musi mieć możliwość wysyłania powiadomień do momentu, aż użytkownik po raz pierwszy uruchomi działanie z tej aplikacji.
W przypadku aplikacji kierowanych 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ą wtedy 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 zgody na wyświetlanie powiadomień w ramach tymczasowego przyznania uprawnień po uaktualnieniu, a użytkownik uruchomił ją co najmniej raz, aplikacja musi wyświetlić prośbę o zgodę na wyświetlanie powiadomień, zanim będzie mogła uruchomić kolejne usługi na pierwszym planie.
W przypadku aplikacji, które mają docelowy pakiet SDK w wersji starszej niż Android 13, przechwyć pierwsze uruchomienie działania po utworzeniu przez aplikację co najmniej 1 elementu
NotificationChannel, aby wyświetlić prośbę o uprawnienia z pytaniem, czy użytkownik chce otrzymywać powiadomienia z aplikacji.Jeśli użytkownik dostosował wcześniej ustawienia powiadomień na poziomie aplikacji lub
NotificationChannelw przypadku aplikacji na urządzeniu, które jest uaktualniane, lub w kopii zapasowej przywracanej na urządzeniu, ustawienie na poziomie aplikacji musi zostać przeniesione do systemu uprawnień z flagąFLAG_PERMISSION_USER_SET. Użytkownikowi nie należy wyświetlać kolejnej prośby o zgodę na wyświetlanie powiadomień, chyba że aplikacja wyraźnie o to poprosi.
Tworzenie i przywracanie kopii zapasowych musi być zgodne wstecz i w przód między urządzeniem z Androidem 13 a urządzeniem z wcześniejszą wersją systemu operacyjnego. Dane kopii zapasowej wygenerowane na urządzeniu z Androidem 13 muszą być przywracane na urządzeniu z wcześniejszą wersją systemu operacyjnego, a dane kopii zapasowej z wcześniejszej wersji systemu operacyjnego muszą być przywracane na urządzeniu z Androidem 13.
Powiadomienia multimedialne powiązane z odtwarzaniem multimediów muszą być wyłączone ze zgody na wyświetlanie powiadomień.
Sprawdzanie zmian w systemach powiadomień i uprawnień
Aby sprawdzić implementację, wykonaj te testy:
Testy jednostkowe określone w
PreferencesHelperTestiNotificationManagerServiceTest.Wszystkie testy ręczne, które testują uaktualnienia oraz tworzenie i przywracanie kopii zapasowych.
Wszystkie testy CTS systemu uprawnień i powiadomień, które wysyłają powiadomienia. Niektóre z tych testów znajdują się w cts/tests/tests/permission/, NotificationManagerTest.java, i cts/tests/tests/notificationlegacy/.