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:
- Wybierz Zezwól.
- Wybierz Nie zezwalaj.
- Przesuń palcem poza okno, nie naciskając żadnego przycisku.
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:
- wysyłać powiadomienia; Wszystkie kanały powiadomień są dozwolone.
- Wysyłanie powiadomień związanych z usługami działającymi na pierwszym planie. Te powiadomienia pojawiają się w panelu powiadomień.
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:
- Deklaruje uprawnienie
MANAGE_OWN_CALLS
. - Implementuje interfejs
ConnectionService
. - 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.
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.