Uprawnienia czasu działania powiadomień

Android 13 (poziom interfejsu API 33) i nowsze obsługują uprawnienia czasu działania do wysyłania z aplikacji niewykluczonych (w tym dotyczących usług działających na pierwszym planie) powiadomień z aplikacji: POST_NOTIFICATIONS. Dzięki tej zmianie użytkownicy mogą skupić się na najważniejszych powiadomieniach.

Zdecydowanie zalecamy jak najszybsze kierowanie aplikacji na Androida 13 lub nowszego, aby zyskać dodatkową kontrolę i elastyczność tej funkcji. Jeśli nadal będziesz kierować reklamy na wersję 12L (poziom interfejsu API 32) lub niższy, utracisz pewien poziom elastyczności, ponieważ prośba o uprawnienia w kontekście funkcji aplikacji.

Zadeklaruj uprawnienia

Aby poprosić aplikację o przyznanie nowych uprawnień do wyświetlania powiadomień, zaktualizuj ją tak, aby była kierowana na Androida 13, i wykonaj podobny proces co prośba o inne uprawnienia w czasie działania. Instrukcje znajdziesz w sekcjach poniżej.

Uprawnienia, które musisz zadeklarować w pliku manifestu aplikacji, znajdują się w tym fragmencie kodu:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Możliwości aplikacji zależą od wyboru użytkownika w oknie uprawnień

W tym oknie użytkownicy mogą wykonywać te działania:

Sekcje poniżej zawierają opis działania aplikacji w zależności od wykonywanej przez użytkownika czynności.

Użytkownik klika „Zezwól”

Jeśli użytkownik wybierze opcję zezwalaj, aplikacja może:

Użytkownik klika „Nie zezwalaj”

Jeśli użytkownik wybierze opcję nie zezwalaj, aplikacja nie będzie mogła wysyłać powiadomień, chyba że będzie kwalifikować się do wykluczenia. Zablokowane są wszystkie kanały powiadomień z wyjątkiem kilku konkretnych ról. Jest to podobne do zachowania, które ma miejsce, gdy użytkownik ręcznie wyłączy wszystkie powiadomienia z aplikacji w ustawieniach systemowych.

Uwaga: jeśli aplikacja jest kierowana na język docelowy na poziomie 12 L lub mniej, a użytkownik kliknie Nie zezwalaj (chociaż raz), monit nie pojawi się ponownie, dopóki nie wystąpi jedna z tych sytuacji:

  • użytkownik odinstaluje i ponownie zainstaluje aplikację;
  • Aktualizujesz aplikację, aby była kierowana na Androida 13 lub nowszego.

Użytkownik przesuwa palcem poza okno

Gdy użytkownik przesunie palcem poza okno, czyli nie wybierze zezwalaj ani nie zezwalaj, stan uprawnień do wyświetlania powiadomień się nie zmieni.

Wpływ na nowo zainstalowane aplikacje

Jeśli użytkownik zainstaluje Twoją aplikację na urządzeniu z Androidem 13 lub nowszym, powiadomienia są domyślnie wyłączone. Aplikacja musi poczekać z wysyłaniem powiadomień do momentu, gdy poprosisz o nowe uprawnienia, a użytkownik je przyzna.

Czas wyświetlenia okna uprawnień zależy od docelowej wersji pakietu SDK:

  • Jeśli Twoja aplikacja jest kierowana na Androida w wersji 13 lub nowszej, ma ona pełną kontrolę nad tym, kiedy wyświetla się okno z uprawnieniami. Wyjaśnij użytkownikom, dlaczego aplikacja potrzebuje tych uprawnień, i zachęć ich do przyznania.
  • Jeśli Twoja aplikacja jest kierowana na poziom 12L (poziom interfejsu API 32) lub niższy, system wyświetli okno uprawnień przy pierwszym uruchomieniu działania w aplikacji po utworzeniu kanału powiadomień lub gdy aplikacja rozpocznie działanie, a następnie utworzy swój pierwszy kanał powiadomień. Zwykle dzieje się tak podczas uruchamiania aplikacji.

Wpływ na aktualizacje istniejących aplikacji

Aby zminimalizować zakłócenia związane z uprawnieniami do wyświetlania powiadomień, system automatycznie przyznaje wstępnie uprawnienia wszystkim odpowiednim aplikacjom, gdy użytkownik uaktualni urządzenie do Androida w wersji 13 lub nowszej. Oznacza to, że mogą one nadal wysyłać powiadomienia do użytkowników, a użytkownicy nie widzą prośby o przyznanie uprawnień w czasie działania.

Kryteria kwalifikacji do wstępnego przyznania uprawnień

Aby aplikacja kwalifikowała się do automatycznego przyznania wstępnego, musi mieć istniejący kanał powiadomień, a powiadomienia nie mogą być wyraźnie wyłączone przez użytkownika na urządzeniu z Androidem o szerokości 12 L lub niższym.

Jeśli użytkownik wyłączył powiadomienia z Twojej aplikacji na urządzeniu z Androidem 12L lub starszym, odmowa będzie nadal obowiązywać po uaktualnieniu urządzenia do Androida 13 lub nowszego.

Zwolnienia

Ta sekcja zawiera zbiór powiadomień i aplikacji, które nie podlegają zmianie w związku ze zmianą uprawnień dotyczących powiadomień. Jeśli na urządzeniu z Androidem 13 (poziom interfejsu API 33) lub nowszym użytkownik odmówi przyznania uprawnień, nadal będzie widzieć w Menedżerze zadań powiadomienia związane z usługami na pierwszym planie, ale nie będzie ich widzieć w panelu powiadomień.

Sesje multimediów

Ta zmiana sposobu działania nie dotyczy powiadomień związanych z sesjami multimediów.

Aplikacje skonfigurowane do samodzielnego zarządzania połączeniami telefonicznymi

Jeśli Twoja aplikacja konfiguruje się do samodzielnego zarządzania połączeniami telefonicznymi, nie potrzebujesz uprawnienia POST_NOTIFICATIONS, aby aplikacja mogła wysyłać powiadomienia w stylu powiadomień Notification.CallStyle.

System uznaje aplikację za skonfigurowaną samodzielnie do samodzielnego zarządzania połączeniami telefonicznymi, jeśli:

  1. Deklaruje uprawnienie MANAGE_OWN_CALLS.
  2. Implementuje interfejs ConnectionService.
  3. zarejestruje się u operatora telekomunikacyjnego urządzenia, dzwoniąc pod numer registerPhoneAccount();

Testowanie aplikacji

Możesz ocenić, jak uprawnienia dotyczące powiadomień wpływają na Twoją aplikację przy pierwszym użyciu na urządzeniu z Androidem 13 lub nowszym. Te zestawy poleceń Android Debug Bridge (ADB) umożliwiają symulowanie najczęstszych sekwencji wyboru użytkownika i aktualizacji urządzenia bez konieczności resetowania urządzenia testowego:

  • Aplikacja została niedawno zainstalowana na urządzeniu z Androidem 13 lub nowszym:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • Użytkownik pozostawia powiadomienia włączone, gdy aplikacja zostanie zainstalowana na urządzeniu z Androidem 12L lub starszym, a następnie nastąpi aktualizacja Androida do wersji 13 lub nowszej:

    adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • Użytkownik ręcznie wyłącza powiadomienia, gdy aplikacja jest zainstalowana na urządzeniu z Androidem 12L lub starszym, a następnie urządzenie zostanie zaktualizowane do Androida w wersji 13 lub nowszej:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed

Sprawdzone metody

W tej sekcji opisujemy kilka sposobów na najefektywniejsze korzystanie w aplikacji z nowego uprawnienia do wyświetlania powiadomień.

Zaktualizuj docelową wersję pakietu SDK aplikacji

Aby zapewnić aplikacji większą elastyczność w zakresie wyświetlania okna uprawnień, zaktualizuj ją tak, aby była kierowana na Androida w wersji 13 lub nowszej.

Poczekaj na wyświetlenie prośby o zgodę na wyświetlanie powiadomień

Zanim poprosisz użytkowników o przyznanie uprawnień, pozwól im zapoznać się z aplikacją.

Nowi użytkownicy mogą chcieć zapoznać się z aplikacją i z pierwszej ręki odkryć korzyści płynące z każdej prośby o powiadomienie. Możesz wywołać prośbę o przyznanie uprawnień w wyniku działania użytkownika. Na poniższej liście zamieściliśmy kilka przykładowych sytuacji, w których jest dobry moment na wyświetlenie prośby o zgodę na wyświetlanie powiadomień:

  • Użytkownik klika przycisk „Dzwonek alertów”.
  • użytkownik decyduje się obserwować konto w mediach społecznościowych,
  • Użytkownik składa zamówienie na dostawę jedzenia.

Rysunek 1 przedstawia zalecany przepływ pracy w przypadku żądania uprawnień do wysyłania powiadomień. Jeśli funkcja shouldShowRequestPermissionRationale() nie zwraca wartości true, aplikacja nie musi wyświetlać środkowego ekranu – tego, który zawiera tytuł „Powiadom mnie”.

Możesz też ustawić żądanie tak, aby pojawiały się, gdy dasz użytkownikom szansę na zapoznanie się z Twoją aplikacją. Możesz np. odczekać 3 lub 4 razy uruchomienie aplikacji przez użytkownika.

Po zalogowaniu się użytkownik zobaczy zaproszenie do otrzymywania powiadomień o aktualizacjach dotyczących podróży. Gdy użytkownik kliknie przycisk „Jestem w pokoju”, aplikacja poprosi o nowe uprawnienia, co spowoduje wyświetlenie okna systemowego.
Rysunek 1. Zalecany, oparty na użytkownikach przepływ pracy związany z wysyłaniem prośby o zgodę na wyświetlanie powiadomień. Środkowy ekran jest wymagany tylko wtedy, gdy shouldShowRequestPermissionRationale() zwraca wartość true.

Prośba o uprawnienia w kontekście

Jeśli poprosisz o zgodę na wyświetlanie powiadomień w aplikacji, zrób to w odpowiednim kontekście. W ten sposób dokładnie wyjaśnisz, do czego te powiadomienia mają służyć i dlaczego użytkownik powinien je zaakceptować. Aplikacja do obsługi poczty e-mail może na przykład udostępniać opcje wysyłania powiadomień o każdym nowym e-mailu lub tylko o e-mailach, w których użytkownik jest jedynym odbiorcą wiadomości.

Wykorzystaj tę okazję, aby w przejrzysty sposób przedstawić swoje intencje, a użytkownicy z większym prawdopodobieństwem udzielą aplikacji zgody na wyświetlanie powiadomień.

Sprawdzanie, czy aplikacja może wysyłać powiadomienia

Zanim aplikacja wyśle powiadomienie, sprawdź, czy użytkownik włączył powiadomienia. Aby to zrobić, wywołaj areNotificationsEnabled().

Odpowiedzialne korzystanie z uprawnień

Gdy otrzymasz zgodę na wysyłanie powiadomień, pamiętaj, by odpowiedzialnie korzystać z tego uprawnienia. Użytkownicy mogą sprawdzić liczbę dziennych powiadomień wysyłanych przez Twoją aplikację i w każdej chwili mogą cofnąć te uprawnienia.