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

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ą poprosić użytkowników o zgodę przed wysłaniem powiadomień. Ten model pomaga ograniczyć przerwy w wyświetlaniu 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ń z wymaganiem 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.

Zachowanie powiadomień w modelu z wyrażeniem zgody

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 Androida starsze niż 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.

Wskazówki dotyczące implementacji

Aby zapoznać się z implementacją referencyjną, zobacz usługę powiadomień, usługę dotyczącą uprawnieńusługę dotyczącą zasad. 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 do Androida 13 lub starszego:

  • 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 odpowiedniego promptu, 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 przyznanie uprawnień przy pierwszym uruchomieniu aplikacji.
  • Aplikacje, które były na urządzeniu przed uaktualnieniem do Androida 13, lub aplikacje przywrócone z kopii zapasowej, muszą 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 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ą 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 powiadomień na podstawie tymczasowego przyznania uprawnień i użytkownik uruchomił ją co najmniej raz, aplikacja musi wyświetlić prośbę o uprawnienia do powiadomień, zanim będzie można uruchomić inne 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ą flagi FLAG_PERMISSION_USER_SET. Użytkownik nie powinien otrzymywać dodatkowych próśb o zgodę na wyświetlanie powiadomień, chyba że aplikacja wyraźnie o to poprosi.

  • Tworzenie i przywracanie kopii zapasowej musi być zgodne wstecz i wstecz między urządzeniem z Androidem 13 a urządzeniem z wcześniejszą wersją 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: