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ę Zezwalaj, 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ą.

Wykorzystaj tę okazję, aby poinformować użytkowników o swoich zamiarach. Dzięki temu z większym prawdopodobieństwem przyznają oni 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 aplikacji. Aby to zrobić, wywołaj funkcję areNotificationsEnabled().

Odpowiedzialne korzystanie z uprawnień

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