Uprawnienia czasu działania powiadomień

Android 13 (poziom interfejsu API 33) i nowsze obsługują uprawnienia w czasie działania do wysyłania niezwolnionych powiadomień (w tym powiadomień usług działających na pierwszym planie) z aplikacji POST_NOTIFICATIONS. Ta zmiana pozwoli użytkownikom skupić się na tych powiadomieniach, które są dla nich najważniejsze.

Zalecamy jak najszybsze przejście na Androida 13 lub nowszego, aby zyskać dodatkową kontrolę i elastyczność tej funkcji. Jeśli nadal będziesz kierować reklamy na poziom 12L (poziom interfejsu API 32) lub niższy, utracisz pewną elastyczność dzięki wysyłaniu próśb o przyznanie uprawnień w kontekście funkcji aplikacji.

Zadeklarowanie uprawnień

Aby poprosić o nowe uprawnienia w czasie działania aplikacji, zaktualizuj ją tak, aby była kierowana na Androida 13, i wykonaj proces podobny do wysyłania próśb o inne uprawnienia w czasie działania aplikacji, jak pokazano w sekcjach poniżej.

Uprawnienie, które musisz zadeklarować w pliku manifestu aplikacji, jest widoczne 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ą wykonać te działania:

Sekcje poniżej opisują, jak zachowuje się aplikacja w zależności od tego, jakie działanie wykonuje użytkownik.

Użytkownik klika „Zezwól”

Jeśli użytkownik wybierze opcję zezwalaj, aplikacja będzie mogła:

Użytkownik wybiera „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. Wszystkie kanały powiadomień są blokowane z wyjątkiem kilku konkretnych ról. Działa to podobnie jak wtedy, gdy użytkownik ręcznie wyłączy wszystkie powiadomienia z aplikacji w ustawieniach systemowych.

Uwaga: jeśli Twoja aplikacja jest kierowana na rozmiar 12 L lub mniej, a użytkownik kliknie Nie zezwalaj, choćby raz, nie pojawi się on ponownie, dopóki nie wystąpi jedna z tych sytuacji:

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

Użytkownik opuszcza okno

Jeśli użytkownik wyjdzie poza okno (czyli nie wybierze opcji 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 będą domyślnie wyłączone. Aplikacja musi poczekać z wysyłaniem powiadomień do momentu, gdy poprosisz o nowe uprawnienie, a użytkownik je przyzna aplikacji.

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

  • Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, ma pełną kontrolę nad tym, kiedy wyświetla się okno uprawnień. Wykorzystaj tę możliwość, aby wyjaśnić użytkownikom, dlaczego aplikacja potrzebuje tych uprawnień, i zachęcić ich do ich przyznania.
  • Jeśli Twoja aplikacja jest kierowana na wersję 12L (poziom interfejsu API 32) lub niższy, system wyświetla okno uprawnień, gdy aplikacja po raz pierwszy rozpocznie działanie po utworzeniu kanału powiadomień lub gdy aplikacja rozpocznie aktywność, a potem utworzy pierwszy kanał powiadomień. Zwykle dzieje się tak podczas uruchamiania aplikacji.

Wpływ na aktualizacje opublikowanych aplikacji

Aby zminimalizować zakłócenia związane z uprawnieniami do wyświetlania powiadomień, system automatycznie przyznaje te uprawnienia wszystkim kwalifikującym się aplikacjom, gdy użytkownik przejdzie na Androida 13 lub nowszego. Oznacza to, że mogą one nadal wysyłać powiadomienia do użytkowników, a użytkownicy nie zobaczą prośby o uprawnienia 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ń i nie może mieć wyraźnie wyłączonych powiadomień przez użytkownika na urządzeniu z rozmiarem 12 L lub niższym.

Jeśli użytkownik wyłączył powiadomienia dotyczące Twojej aplikacji na urządzeniu z Androidem 12L lub starszym, odmowa będzie widoczna po przejściu urządzenia na Androida 13 lub nowszego.

Zwolnienia

Ta sekcja zawiera zbiór powiadomień i aplikacji, które nie są objęte zmianą sposobu działania uprawnień do powiadomień. Jeśli użytkownik odmówi zgody na wyświetlanie powiadomień na Androidzie 13 (poziom interfejsu API 33) lub nowszym, w Menedżerze zadań nadal będzie widzieć powiadomienia związane z usługami działającymi na pierwszym planie, ale nie będą widoczne w panelu powiadomień.

Sesje multimediów

Ta zmiana nie dotyczy powiadomień związanych z sesjami multimediów.

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

Jeśli Twoja aplikacja konfiguruje się automatycznie 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ą pod kątem samodzielnego zarządzania połączeniami telefonicznymi, jeśli ma:

  1. Deklaruje uprawnienie MANAGE_OWN_CALLS.
  2. Implementuje interfejs ConnectionService.
  3. Zarejestruje się u dostawcy telekomunikacyjnego urządzenia, wywołując metodę registerPhoneAccount().

Testowanie aplikacji

Możesz ocenić, jak uprawnienia dotyczące powiadomień wpływają na Twoją aplikację po raz pierwszy na urządzeniu z Androidem 13 lub nowszym. Te zestawy poleceń Android Debug Bridge (ADB) pozwalają symulować najczęstsze sekwencje wyborów użytkowników i uaktualnień urządzeń 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 włączone powiadomienia, gdy aplikacja zostanie zainstalowana na urządzeniu z Androidem 12L lub starszym, a następnie urządzenie przejdzie na Androida 13 lub nowszego:

    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 aktualizuje się do Androida 13 lub nowszego:

    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 z nowych uprawnień do powiadomień w aplikacji.

Zaktualizuj docelową wersję pakietu SDK aplikacji

Aby zapewnić aplikacji większą elastyczność w zakresie czasu, w którym wyświetla się okno uprawnień, zaktualizuj aplikację, tak aby była kierowana na Androida 13 lub nowszego.

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

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

Nowi użytkownicy mogą chcieć zapoznać się z aplikacją i osobiście poznać zalety poszczególnych próśb o powiadomienie. Możesz wywołać prośbę o przyznanie uprawnień po działaniu użytkownika. Na poniższej liście znajdziesz kilka przykładów sytuacji, w których warto wyświetlić prośbę o zgodę na wyświetlanie powiadomień:

  • Użytkownik klika przycisk „dzwonka alertu”.
  • Użytkownik decyduje się obserwować czyjeś konto w mediach społecznościowych.
  • Użytkownik przesyła zamówienie z dostawą jedzenia.

Ilustracja 1 przedstawia zalecany proces wysyłania prośby o zgodę na wyświetlanie powiadomień. Jeśli shouldShowRequestPermissionRationale() nie zwróci wartości true, aplikacja nie musi wyświetlać środkowego ekranu – tego, który ma tytuł „Powiadom mnie”.

Możesz też ustawić prośbę tak, aby pojawiała się po tym, jak umożliwisz użytkownikom zapoznanie się z Twoją aplikacją, np. 3 lub 4 razy jej uruchomienie przez użytkownika.

Po zalogowaniu się użytkownik otrzymuje zaproszenie do otrzymywania powiadomień o aktualizacjach podróży. Gdy użytkownik kliknie przycisk Jestem, aplikacja poprosi o nowe uprawnienia, co spowoduje wyświetlenie okna systemowego
Rysunek 1. Zalecany przepływ pracy oparty na użytkownikach do żądania uprawnień do wyświetlania powiadomień. Środkowy ekran jest potrzebny tylko wtedy, gdy shouldShowRequestPermissionRationale() zwraca wartość true.

Uzyskiwanie uprawnień w kontekście

Gdy prosisz o zgodę na wyświetlanie powiadomień w aplikacji, rób to w odpowiednim kontekście, by jasno określić, do czego będą służyć powiadomienia i dlaczego użytkownik powinien wyrazić na to zgodę. Aplikacja do poczty e-mail może na przykład zawierać opcje wysyłania powiadomień o każdym nowym e-mailu lub tylko w przypadku tych e-maili, których użytkownik jest jedynym adresatem.

Wykorzystaj tę okazję, aby jasno określić swoje zamiary, a użytkownicy z większym prawdopodobieństwem przyznają Twojej aplikacji zgodę na wyświetlanie powiadomień.

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

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

Odpowiedzialne korzystanie z uprawnień

Gdy otrzymasz zgodę na wysyłanie powiadomień, pamiętaj, by rozsądnie korzystać z tych uprawnień. Użytkownicy widzą liczbę powiadomień wysyłanych przez aplikację w ciągu dnia oraz mogą anulować uprawnienia w każdej chwili.