Powiadomienia w Androidzie 13 wykorzystują model opt-in, co stanowi zmianę w stosunku do poprzednich wersji Androida, które korzystają z modelu opt-out. W systemie Android 13 wszystkie aplikacje muszą pytać użytkowników o pozwolenie przed wysłaniem monitów z powiadomieniami. Model ten pomaga ograniczyć przerwy w wysyłaniu powiadomień, minimalizuje przeciążenie informacjami i pomaga użytkownikom kontrolować, jakie powiadomienia są wyświetlane w oparciu o to, co jest dla nich ważne. Aby wspierać model opt-in, producenci OEM muszą wdrożyć zmiany w systemach powiadomień i uprawnień wykonawczych.
Na tej stronie opisano, co producenci OEM muszą wdrożyć, aby obsłużyć tę zmianę, oraz sposób sprawdzania poprawności wdrożenia.
Wprowadź zmiany w powiadomieniach wyrażających zgodę
Począwszy od Androida 13, aplikacje muszą zadeklarować zamiar wysyłania powiadomień, żądając od systemu uprawnień wykonawczych android.permission.POST_NOTIFICATION
, zanim będą mogły wysyłać powiadomienia.
W Androidzie 13 i nowszych ustawienia określające, czy aplikacja może wysyłać powiadomienia do użytkownika, są przechowywane w systemie uprawnień. Przed Androidem 13 to ustawienie było przechowywane w systemie powiadomień. Dlatego producenci OEM muszą przeprowadzić migrację istniejących danych powiadomień o tym, czy aplikacja może wysyłać powiadomienia, z systemu powiadomień do systemu uprawnień wykonawczych. Producenci OEM muszą także utrzymywać w systemie powiadomień istniejące interfejsy API, które przekazują te dane twórcom aplikacji.
Zmiany w systemach powiadomień i uprawnień opierają się na modelu opt-in zachowania powiadamiania użytkowników i zostały opisane w sekcji Wytyczne dotyczące wdrożenia .
Zachowanie powiadomień użytkowników w modelu opt-in
Poniższa tabela ilustruje zachowanie powiadomień dla różnych wersji aplikacji na urządzeniu z systemem Android 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 czasu wyświetlenia monitu przez aplikację. Aplikacje kontrolują, kiedy prosić o pozwolenie. | Powiadomienia są blokowane do czasu wyświetlenia monitu przez system operacyjny. Pozwolenie jest wymagane przy pierwszym uruchomieniu aplikacji. |
Istniejąca aplikacja (aktualizacja) | Powiadomienia są dozwolone, dopóki aplikacja nie wyświetli monitu. Tymczasowe zezwolenie jest udzielane do czasu, aż aplikacja poprosi o to podczas pierwszego przejazdu kwalifikacyjnego. | Powiadomienia są dozwolone, dopóki system operacyjny nie wyświetli monitu. Zezwolenie tymczasowe jest udzielane do czasu pierwszego uruchomienia aplikacji. |
Wytyczne dotyczące wdrożenia
Aby zapoznać się z implementacją referencyjną, zobacz usługę powiadamiania , usługę uprawnień i usługę zasad . Aby zaimplementować wyjątki dla domyślnych procedur obsługi uprawnień, zobacz Uprawnienia wykonawcze .
Podczas wdrażania stosuj się do następujących wskazówek dotyczących zachowania powiadomień użytkowników w przypadku aplikacji przeznaczonych dla Androida 13 lub starszych zestawów SDK:
- Świeżo zainstalowane aplikacje na urządzeniu z Androidem 13 nie mogą wysyłać powiadomień bez zatwierdzenia przez użytkownika monitu o pozwolenie.
- Jeśli aplikacja jest przeznaczona dla wersji Androida 13 i nowszych, powiadomienia muszą być blokowane do czasu wyświetlenia monitu przez aplikację, ponieważ aplikacja kontroluje, kiedy i czy pytać użytkownika o pozwolenie.
- Jeśli aplikacja jest przeznaczona dla wersji niższych niż Android 13, powiadomienia muszą być blokowane do czasu wyświetlenia monitu przez system operacyjny. System operacyjny musi wyświetlić monit o pozwolenie przy pierwszym uruchomieniu aplikacji.
Każda aplikacja, która istniała na urządzeniu przed aktualizacją do Androida 13, lub jakakolwiek aplikacja, która została przywrócona w ramach tworzenia kopii zapasowej i przywracania, musi mieć możliwość wysyłania powiadomień do momentu pierwszego uruchomienia przez użytkownika działania w tej aplikacji.
W przypadku aplikacji przeznaczonych dla pakietu SDK w wersji Androida 13 i nowszych, 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 pozwolenie, zanim będą mogły kontynuować wysyłanie powiadomień.Jeśli zaktualizowana aplikacja przeznaczona dla systemu Android 13 nie ma obecnie pozwolenia na powiadamianie w ramach tymczasowego zezwolenia na uaktualnienie, a użytkownik uruchomił ją co najmniej raz, aplikacja musi wyświetlić monit o pozwolenie na powiadomienie, zanim będzie mogła uruchomić dalsze usługi na pierwszym planie.
W przypadku aplikacji, które mają docelowy zestaw SDK w wersji starszej niż Android 13, przechwyć pierwsze uruchomienie działania po utworzeniu przez aplikację co najmniej jednego
NotificationChannel
, aby wyświetlić monit o pozwolenie 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 do aktualizacji lub w kopii zapasowej przywracanej na urządzeniu, ustawienie na poziomie aplikacji należy przenieść do systemu uprawnień za pomocą flagiFLAG_PERMISSION_USER_SET
. Użytkownikowi nie musi być wyświetlana żadna prośba o pozwolenie na powiadomienie, chyba że aplikacja wyraźnie o to poprosi.
Tworzenie kopii zapasowych i przywracanie 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 systemem Android 13 należy przywrócić na wcześniejszą wersję systemu operacyjnego, a dane kopii zapasowej z wcześniejszej wersji systemu operacyjnego należy przywrócić na urządzeniu z systemem Android 13.
Powiadomienia o multimediach związane z trwającym odtwarzaniem multimediów muszą być zwolnione z obowiązku powiadamiania.
Zatwierdź zmiany w systemach powiadomień i zezwoleń
Aby sprawdzić poprawność implementacji, uruchom następujące testy:
Testy jednostkowe określone w
PreferencesHelperTest
,NotificationManagerServiceTest
.Dowolny test ręczny sprawdzający aktualizacje oraz tworzenie kopii zapasowych i przywracanie.
Dowolny test systemu uprawnień i powiadomień CTS, który wysyła powiadomienia. Niektóre z tych testów znajdują się w plikach cts/tests/tests/permission/ , NotificationManagerTest.java i cts/tests/tests/notificationlegacy/ .