Zgoda na wyświetlanie powiadomień w przypadku powiadomień z wyrażeniem zgody

W Androidzie 13 powiadomienia działają w modelu wyrażania zgody, co stanowi zmianę w porównaniu z poprzednimi wersjami Androida, w których stosowano model rezygnacji. W Androidzie 13 wszystkie aplikacje muszą poprosić użytkowników o zgodę, zanim wyślą prośbę o powiadomienie. Ten model pomaga ograniczyć przerywanie pracy przez powiadomienia, minimalizuje nadmiar informacji i pozwala użytkownikom kontrolować, które powiadomienia mają się wyświetlać 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 zweryfikować implementację.

Wprowadzanie zmian w przypadku powiadomień wymagających zgody

Od Androida 13 aplikacje muszą deklarować swój zamiar wysyłania powiadomień, prosząc system o android.permission.POST_NOTIFICATION uprawnienie czasu działania, 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 Wytyczne dotyczące implementacji.

Zachowanie powiadomień użytkownika w modelu wyrażania zgody

W tabeli poniżej przedstawiono 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 mają prosić 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.

Wytyczne dotyczące implementacji

Implementację referencyjną znajdziesz w usłudze powiadomień, usłudze uprawnień i usłudze zasad. Aby zaimplementować wyjątki dla domyślnych modułów obsługi uprawnień, zapoznaj się z sekcją Uprawnienia czasu działania.

Podczas implementacji postępuj zgodnie z tymi wytycznymi dotyczącymi zachowania powiadomień użytkownika 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.
    • 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 ma prosić 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 zgodę przy pierwszym uruchomieniu aplikacji.
  • Każda aplikacja, która była zainstalowana na urządzeniu przed uaktualnieniem do Androida 13 lub 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 uprawnienie. 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 uprawnień do wysyłania powiadomień w ramach tymczasowego uprawnienia do uaktualnienia, a użytkownik uruchomił ją co najmniej raz, aplikacja musi wyświetlić prośbę o zgodę na wysyłanie powiadomień, zanim będzie mogła uruchamiać kolejne usługi na pierwszym planie.

    • W przypadku aplikacji kierowanych na 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 zgodę na otrzymywanie powiadomień z aplikacji.

      Jeśli użytkownik dostosował wcześniej ustawienia powiadomień na poziomie aplikacji lub NotificationChannel w przypadku aplikacji na uaktualnianym urządzeniu 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żytkownik nie może zobaczyć 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ń.

Weryfikowanie zmian w systemach powiadomień i uprawnień

Aby zweryfikować implementację, wykonaj te testy: