Android 13 (poziom API 33) i nowsze wersje obsługują uprawnienia w czasie działania aplikacji do wysyłania z aplikacji powiadomień, które nie są objęte zwolnieniem (w tym usług działających na pierwszym planie): POST_NOTIFICATIONS. Dzięki tej zmianie użytkownicy mogą skupić się na powiadomieniach, które są dla nich najważniejsze.
Zdecydowanie zalecamy jak najszybsze przejście na Androida 13 lub nowszego, aby móc korzystać z dodatkowej kontroli i elastyczności, które zapewnia ta funkcja. Jeśli nadal będziesz kierować aplikację na Androida 12L (API na poziomie 32) lub starszego, stracisz część elastyczności w zakresie proszenia o uprawnienia w kontekście funkcji aplikacji.
Zadeklaruj uprawnienia
Aby poprosić o nową zgodę na wyświetlanie powiadomień, zaktualizuj aplikację, tak aby była przeznaczona na Androida 13, i wykonaj podobny proces jak w przypadku prośby o inne uprawnienia w czasie działania aplikacji, jak opisano w poniższych sekcjach.
Uprawnienie, które musisz zadeklarować w pliku manifestu aplikacji, pojawia 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ą wykonać te czynności:
- 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ę Zezwól, Twoja aplikacja będzie mogła:
- wysyłanie powiadomień; Dozwolone są wszystkie kanały powiadomień.
- wysyłać powiadomienia związane z usługami działającymi na pierwszym planie. Te powiadomienia pojawiają się w obszarze powiadomień.
Użytkownik wybiera „Nie zezwalaj”
Jeśli użytkownik wybierze opcję Nie zezwalaj, 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, gdy użytkownik ręcznie wyłącza wszystkie powiadomienia z aplikacji w ustawieniach systemowych.
Użytkownik przesuwa palcem, aby zamknąć okno.
Jeśli użytkownik przesunie palcem, aby zamknąć okno, czyli nie wybierze opcji Zezwalaj ani Nie zezwalaj, stan zgody na wyświetlanie powiadomień nie ulegnie zmianie.
Wpływ na nowo zainstalowane aplikacje
Jeśli użytkownik zainstaluje 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ń, dopóki nie poprosisz o nowe uprawnienia i użytkownik nie przyzna ich aplikacji.
Czas wyświetlenia okna uprawnień zależy od docelowej wersji pakietu SDK aplikacji:
- Jeśli aplikacja jest kierowana na Androida 13 lub nowszego, ma pełną kontrolę nad tym, kiedy wyświetla się okno uprawnień. 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 uprawnień, gdy aplikacja po raz pierwszy rozpoczyna aktywność po utworzeniu kanału powiadomień lub gdy aplikacja rozpoczyna aktywność, a następnie tworzy pierwszy kanał powiadomień. Zwykle dzieje się to podczas uruchamiania aplikacji.
W aplikacjach z jedną aktywnością, takich jak większość aplikacji Compose, system wyświetla okno, gdy uruchamia się
MainActivity.
Wpływ na aktualizacje opublikowanych aplikacji
Aby zminimalizować zakłócenia związane ze zgodą na wyświetlanie powiadomień, system automatycznie przyznaje ją 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 przyznanie uprawnień w czasie działania.
Kryteria kwalifikacji do wcześniejszego przyznawania uprawnień
Aby aplikacja kwalifikowała się do automatycznego przyznania uprawnień, musi mieć istniejący kanał powiadomień, a użytkownik nie może wyraźnie wyłączyć 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, odmowa będzie obowiązywać po uaktualnieniu urządzenia do Androida 13 lub nowszego.
Wykluczenia
Ta sekcja zawiera zestaw powiadomień i aplikacji, które są wyłączone ze zmiany działania zgody na wyświetlanie powiadomień. Jeśli użytkownik odmówi zgody na wyświetlanie powiadomień na Androidzie 13 (API na poziomie 33) lub nowszym, nadal będzie widzieć powiadomienia związane z usługami działającymi na pierwszym planie w Menedżerze zadań, ale nie w obszarze powiadomień.
Sesje multimedialne
Powiadomienia związane z sesjami multimedialnymi są wyłączone z tej zmiany.
Aplikacje skonfigurowane do samodzielnego zarządzania połączeniami telefonicznymi
Jeśli aplikacja jest skonfigurowana do samodzielnego zarządzania połączeniami telefonicznymi, nie potrzebujesz uprawnienia POST_NOTIFICATIONS, aby aplikacja mogła wysyłać powiadomienia w stylu Notification.CallStyle.
System uznaje, że aplikacja została skonfigurowana do samodzielnego zarządzania połączeniami telefonicznymi, jeśli:
- Deklaruje uprawnienie
MANAGE_OWN_CALLS. - Implementuje interfejs
ConnectionService. - rejestruje się u operatora telekomunikacyjnego urządzenia, dzwoniąc pod numer
registerPhoneAccount();
Testowanie aplikacji
Możesz sprawdzić, jak zgoda na wyświetlanie powiadomień wpływa na aplikację, gdy jest ona po raz pierwszy używana na urządzeniu z Androidem 13 lub nowszym. Te zestawy poleceń Android Debug Bridge (ADB) umożliwiają symulowanie najczęstszych sekwencji wyborów użytkownika i uaktualnień 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-fixedUżytkownik ma włączone powiadomienia, gdy aplikacja jest zainstalowana na urządzeniu z systemem 12L lub starszym, a następnie urządzenie zostaje uaktualnione 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-fixedUżytkownik ręcznie wyłącza powiadomienia, gdy aplikacja jest zainstalowana na urządzeniu z systemem 12L lub starszym, a następnie urządzenie zostaje uaktualnione 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 jak najskuteczniejsze wykorzystanie nowej zgody na wyświetlanie powiadomień w aplikacji.
Zaktualizuj docelową wersję pakietu SDK aplikacji
Aby aplikacja mogła bardziej elastycznie decydować o tym, kiedy ma się pojawiać okno uprawnień, zaktualizuj ją, aby była kierowana na Androida 13 lub nowszego.
Zaczekaj 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 przekonać się, jakie korzyści przynosi każda prośba o powiadomienie. Możesz wywołać prośbę o przyznanie uprawnień w wyniku działania użytkownika. Poniżej 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 na dostawę jedzenia.
Rysunek 1 przedstawia zalecany proces proszenia o zgodę na wyświetlanie powiadomień. Jeśli shouldShowRequestPermissionRationale() nie zwraca wartości true, aplikacja nie musi wyświetlać środkowego ekranu z tytułem „Otrzymuj powiadomienia!”. W Compose możesz znaleźć bieżący Activity, otwierając LocalContext.current i rzutując go na Activity.
Możesz też ustawić wyświetlanie prośby po tym, jak użytkownicy będą mieli okazję zapoznać się z Twoją aplikacją. Możesz na przykład poczekać, aż użytkownik uruchomi aplikację po raz trzeci lub czwarty.
shouldShowRequestPermissionRationale() zwraca true.
Poproś o uprawnienia
Aby poprosić o uprawnienia w interfejsie Compose, użyj interfejsu API rememberLauncherForActivityResult() z kontraktem ActivityResultContracts.RequestPermission().
Poniższy fragment kodu pokazuje, jak poprosić o zgodę na wyświetlanie powiadomień w odpowiedzi na interakcję użytkownika:
Kotlin
val context = LocalContext.current
val permissionLauncher = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted ->
if (isGranted) {
// Permission granted, you can now send notifications.
} else {
// Permission denied, handle accordingly.
}
}
// ... in your UI ...
Button(onClick = {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}) {
Text("Enable Notifications")
}
Prośba o uprawnienia w danym kontekście
Gdy prosisz o zgodę na wyświetlanie powiadomień w aplikacji, rób to we właściwym kontekście, aby było jasne, do czego służą powiadomienia i dlaczego użytkownik powinien wyrazić na nie zgodę. Na przykład aplikacja do poczty e-mail może zawierać opcje wysyłania powiadomień o każdym nowym e-mailu lub tylko o tych, w których użytkownik jest jedynym odbiorcą.
Wykorzystaj tę okazję, aby jasno przedstawić swoje intencje, a użytkownicy będą bardziej skłonni przyznać Twojej aplikacji zgodę na wyświetlanie powiadomień.
Sprawdzanie, czy aplikacja może wysyłać powiadomienia
Zanim aplikacja wyśle powiadomienie, sprawdź, czy użytkownik włączył powiadomienia dla Twojej aplikacji. Aby to zrobić, wywołaj areNotificationsEnabled().
Odpowiedzialne korzystanie z uprawnień
Po otrzymaniu zgody na wysyłanie powiadomień pamiętaj, aby korzystać z niej w odpowiedzialny sposób. Użytkownicy mogą zobaczyć liczbę powiadomień wysyłanych codziennie przez Twoją aplikację i w każdej chwili mogą cofnąć uprawnienia.