Uprawnienia czasu działania powiadomień

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

Zdecydowanie zalecamy jak najszybsze kierowanie reklam na Androida 13 lub nowszego, aby korzystać z dodatkowej kontroli i elastyczności tej funkcji. Jeśli nadal będziesz kierować aplikację na Androida 12L (API na poziomie 32) lub starszego, stracisz pewną elastyczność w zakresie prośby o uprawnienia w kontekście funkcji aplikacji.

Zadeklaruj uprawnienie

Aby poprosić o nowe uprawnienia do wysyłania powiadomień w aplikacji, zaktualizuj ją, aby była kierowana na Androida 13, i wykonaj podobny proces jak w przypadku prośby o inne uprawnienia w czasie działania, jak pokazano w poniższych sekcjach.

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:

W sekcjach poniżej opisujemy, jak zachowuje się aplikacja w zależności od działania użytkownika.

Użytkownik wybiera „Zezwól”.

Jeśli użytkownik wybierze opcję Zezwól, Twoja aplikacja będzie mogła:

Użytkownik klika „Nie zezwalaj”.

Jeśli użytkownik wybierze opcję Nie zezwalaj, Twoja aplikacja nie będzie mogła wysyłać powiadomień, chyba że kwalifikuje się do wyjątku. Wszystkie kanały powiadomień są zablokowane, z wyjątkiem kilku określonych ról. Jest to podobne do sytuacji, w której użytkownik ręcznie wyłącza wszystkie powiadomienia z Twojej aplikacji w ustawieniach systemu.

Uwaga: jeśli aplikacja jest przeznaczona na Androida 12L lub starszego, a użytkownik kliknie Nie zezwalaj, nawet tylko raz, nie będzie już wyświetlany monit, dopóki nie nastąpi jedno z tych zdarzeń:

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

Użytkownik przesuwa palcem, aby zamknąć okno

Jeśli użytkownik przesunie palcem w bok, aby zamknąć okno, czyli nie wybierze opcji Zezwalaj ani Nie zezwalaj, stan uprawnień do powiadomień nie ulegnie zmianie.

Wpływ na nowo zainstalowane aplikacje

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

Moment wyświetlenia okna z prośbą o uprawnienia zależy od wersji pakietu SDK, na którą jest kierowana aplikacja:

  • Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, ma pełną kontrolę nad tym, kiedy wyświetla się okno z prośbą o uprawnienia. Wykorzystaj tę okazję, aby wyjaśnić użytkownikom, dlaczego aplikacja potrzebuje tego uprawnienia, i zachęcić ich do jego przyznania.
  • Jeśli aplikacja jest kierowana na Androida 12L (API na poziomie 32) lub starszego, system wyświetla okno dialogowe z prośbą o przyznanie uprawnień, gdy aplikacja po raz pierwszy rozpoczyna działanie po utworzeniu kanału powiadomień lub gdy aplikacja rozpoczyna działanie, a następnie tworzy swój pierwszy kanał powiadomień. Zwykle dzieje się to podczas uruchamiania aplikacji.

Wpływ na aktualizacje istniejących aplikacji

Aby zminimalizować zakłócenia związane z uprawnieniami do powiadomień, system automatycznie przyznaje uprawnienia wszystkim kwalifikującym się aplikacjom, gdy użytkownik uaktualni urządzenie do Androida 13 lub nowszego. Innymi słowy, te aplikacje mogą nadal wysyłać powiadomienia do użytkowników, a użytkownicy nie widzą prośby o uprawnienia w czasie działania.

Kwalifikowanie się do wstępnego przyznania uprawnień

Aby aplikacja kwalifikowała się do automatycznego przyznania uprawnień, musi mieć istniejący kanał powiadomień, a użytkownik nie może mieć wyraźnie wyłączonych powiadomień na urządzeniu z Androidem 12L lub starszym.

Jeśli użytkownik wyłączył powiadomienia z Twojej aplikacji na urządzeniu z Androidem 12L lub starszym, ta decyzja pozostanie w mocy po uaktualnieniu urządzenia do Androida 13 lub nowszego.

Zwolnienia

Ta sekcja zawiera listę powiadomień i aplikacji, które są zwolnione ze zmiany w zachowaniu uprawnień do powiadomień. Na Androidzie 13 (API na poziomie 33) lub nowszym, jeśli użytkownik odmówi przyznania uprawnień do powiadomień, nadal będzie widzieć powiadomienia związane z usługami działającymi na pierwszym planie w Menedżerze zadań, ale nie w panelu powiadomień.

Sesje multimedialne

Powiadomienia związane z sesjami multimedialnymi są wyłączone z tej zmiany zachowania.

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

Jeśli aplikacja konfiguruje się tak, aby samodzielnie zarządzać połączeniami telefonicznymi, nie potrzebuje uprawnienia POST_NOTIFICATIONS, aby wysyłać powiadomienia w stylu Notification.CallStyle.

System uzna, że aplikacja jest skonfigurowana do samodzielnego zarządzania połączeniami telefonicznymi, jeśli spełnia wszystkie te warunki:

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

Testowanie aplikacji

Możesz sprawdzić, jak uprawnienia do wysyłania powiadomień wpływają na aplikację, gdy jest ona po raz pierwszy używana na urządzeniu z Androidem 13 lub nowszym. Poniższe zestawy poleceń Android Debug Bridge (ADB) umożliwiają symulowanie najczęstszych sekwencji wyborów użytkowników i aktualizacji urządzeń bez konieczności resetowania urządzenia testowego:

  • Aplikacja jest nowo 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 ma włączone powiadomienia, gdy aplikacja jest zainstalowana na urządzeniu z Androidem 12L lub starszym, a następnie urządzenie zostanie zaktualizowane do 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 zostaje zaktualizowane 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, w jakie możesz najskuteczniej wykorzystać w swojej aplikacji nowe uprawnienia do wysyłania powiadomień.

Aktualizowanie docelowej wersji pakietu SDK aplikacji

Aby zwiększyć elastyczność aplikacji w zakresie wyświetlania okna z prośbą o uprawnienia, zaktualizuj ją tak, aby była kierowana na Androida 13 lub nowszego.

Opóźnienie wyświetlania prośby o przyznanie uprawnień do powiadomień

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

Nowi użytkownicy mogą chcieć zapoznać się z aplikacją i na własnej skórze przekonać się o korzyściach wynikających z poszczególnych próśb o powiadomienia. Możesz wywołać prośbę o uprawnienia w wyniku działania użytkownika. Poniżej znajdziesz kilka przykładów sytuacji, w których warto wyświetlić prośbę o przyznanie uprawnień do wysyłania powiadomień:

  • Użytkownik klika przycisk „dzwonek alarmowy”.
  • Użytkownik decyduje się obserwować konto w mediach społecznościowych.
  • Użytkownik przesyła zamówienie na jedzenie z dowozem.

Na rysunku 1 przedstawiono zalecany proces wysyłania prośby o uprawnienia do wysyłania powiadomień. Jeśli shouldShowRequestPermissionRationale() zwraca true, aplikacja nie musi wyświetlać środkowego ekranu z tekstem „Otrzymuj powiadomienia!”.

Możesz też ustawić wyświetlanie prośby po tym, jak użytkownicy zapoznają się z aplikacją. Możesz na przykład poczekać, aż użytkownik uruchomi aplikację po raz trzeci lub czwarty.

Po zalogowaniu się użytkownik zobaczy zaproszenie do otrzymywania powiadomień o aktualizacjach dotyczących podróży. Gdy użytkownik naciśnie przycisk
   I&#39;m in, aplikacja poprosi o nowe uprawnienie, co spowoduje wyświetlenie okna
   systemowego.
Rysunek 1. Zalecany przepływ pracy inicjowany przez użytkownika w celu poproszenia o zezwolenie na wyświetlanie powiadomień. Środkowy ekran jest potrzebny tylko wtedy, gdy funkcja shouldShowRequestPermissionRationale() zwraca wartość true.

Poproś o uprawnienia w kontekście

Gdy prosisz o uprawnienia do wysyłania powiadomień w aplikacji, rób to w odpowiednim kontekście, aby było wyraźnie widać, do czego służą powiadomienia i dlaczego użytkownik powinien się na nie zgodzić. Na przykład aplikacja poczty e-mail może zawierać opcje wysyłania powiadomień o każdym nowym e-mailu lub tylko o e-mailach, w których użytkownik jest jedynym odbiorcą.

Skorzystaj z tej okazji, aby wyjaśnić użytkownikom swoje intencje. Dzięki temu chętniej przyznają Twojej aplikacji uprawnienia do wysyłania powiadomień.

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

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

Odpowiedzialne korzystanie z uprawnień

Po uzyskaniu zgody na wysyłanie powiadomień pamiętaj, aby korzystać z tego uprawnienia w odpowiedzialny sposób. Użytkownicy mogą sprawdzić liczbę powiadomień wysyłanych przez Twoją aplikację każdego dnia i w każdej chwili cofnąć uprawnienia.