Android 13 (API‑Level 33) und höher unterstützt eine Laufzeitberechtigung zum
Senden nicht ausgenommener Benachrichtigungen (einschließlich Diensten im Vordergrund) aus
einer App: POST_NOTIFICATIONS. Mit dieser Änderung können sich Nutzer auf die Benachrichtigungen konzentrieren, die für sie am wichtigsten sind.
Wir empfehlen dringend, so bald wie möglich auf Android 13 oder höher auszurichten, um von der zusätzlichen Kontrolle und Flexibilität dieser Funktion zu profitieren. Wenn Sie weiterhin auf 12L (API‑Level 32) oder niedriger ausrichten, verlieren Sie etwas Flexibilität bei der Anforderung der Berechtigung im Kontext der Funktionen Ihrer App.
Berechtigung deklarieren
Die Berechtigung, die Sie in der Manifestdatei Ihrer App deklarieren müssen, wird im folgenden Code-Snippet angezeigt:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
App-Funktionen hängen von der Auswahl des Nutzers im Berechtigungsdialogfeld ab
In diesem Dialogfeld haben Nutzer folgende Möglichkeiten:
- Zulassen auswählen
- Nicht zulassen auswählen
- Das Dialogfeld wegwischen, ohne auf eine der beiden Schaltflächen zu tippen
In den folgenden Abschnitten wird beschrieben, wie sich Ihre App verhält, je nachdem, welche Aktion der Nutzer ausführt.
Nutzer wählt „Zulassen“ aus
Wenn der Nutzer die Option Zulassen auswählt, kann Ihre App Folgendes tun:
- Benachrichtigungen senden. Alle Benachrichtigungskanäle sind zulässig.
- Benachrichtigungen zu Diensten im Vordergrund posten. Diese Benachrichtigungen werden auf der Benachrichtigungsleiste angezeigt.
Nutzer wählt „Nicht zulassen“ aus
Wenn der Nutzer die Option Nicht zulassen auswählt, kann Ihre App keine Benachrichtigungen senden, es sei denn, sie erfüllt die Voraussetzungen für eine Ausnahme. Alle Benachrichtigungskanäle sind blockiert, mit Ausnahme einiger bestimmter Rollen. Das Verhalten ist ähnlich wie beim manuellen Deaktivieren aller Benachrichtigungen für Ihre App in den Systemeinstellungen.
Nutzer wischt das Dialogfeld weg
Wenn der Nutzer das Dialogfeld wegwischt, d. h. weder Zulassen noch Nicht zulassen auswählt, ändert sich der Status der Berechtigung zum Senden von Benachrichtigungen nicht .
Auswirkungen auf neu installierte Apps
Wenn ein Nutzer Ihre App auf einem Gerät mit Android 13 oder höher installiert, sind die Benachrichtigungen Ihrer App standardmäßig deaktiviert. Ihre App muss warten, bis Sie die neue Berechtigung angefordert haben und der Nutzer Ihrer App diese Berechtigung erteilt hat, bevor sie Benachrichtigungen senden kann.
Der Zeitpunkt, zu dem das Berechtigungsdialogfeld angezeigt wird, hängt von der Ziel-SDK-Version Ihrer App ab:
- Wenn Ihre App auf Android 13 oder höher ausgerichtet ist, hat sie die vollständige Kontrolle darüber, wann das Berechtigungsdialogfeld angezeigt wird. Nutzen Sie diese Gelegenheit, um Nutzern zu erklären, warum die App diese Berechtigung benötigt, und sie dazu zu ermutigen, sie zu erteilen.
- Wenn Ihre App auf 12L (API‑Level 32) oder niedriger ausgerichtet ist, zeigt das System
das Berechtigungsdialogfeld an, wenn Ihre App zum ersten Mal eine Aktivität startet, nachdem Sie
einen Benachrichtigungskanal erstellt haben, oder wenn Ihre App eine Aktivität startet und
dann ihren ersten Benachrichtigungskanal erstellt. Das geschieht in der Regel beim Starten der App.
Bei Apps mit einer einzigen Aktivität, z. B. den meisten Compose-Apps, zeigt das System das Dialogfeld an, wenn
MainActivitygestartet wird.
Auswirkungen auf Updates für bestehende Apps
Um Unterbrechungen im Zusammenhang mit der Berechtigung zum Senden von Benachrichtigungen zu minimieren, erteilt das System allen berechtigten Apps automatisch die Berechtigung, wenn der Nutzer sein Gerät auf Android 13 oder höher aktualisiert. Mit anderen Worten: Diese Apps können weiterhin Benachrichtigungen an Nutzer senden und Nutzer sehen keine Aufforderung zur Erteilung einer Laufzeitberechtigung.
Voraussetzungen für die automatische Erteilung der Berechtigung
Damit Ihre App für eine automatische Erteilung der Berechtigung infrage kommt, muss sie einen vorhandenen Benachrichtigungskanal haben und die Benachrichtigungen dürfen nicht explizit vom Nutzer auf einem Gerät mit 12L oder niedriger deaktiviert worden sein.
Wenn der Nutzer Benachrichtigungen für Ihre App auf einem Gerät mit 12L oder niedriger deaktiviert hat, bleibt diese Ablehnung bestehen, wenn das Gerät auf Android 13 oder höher aktualisiert wird.
Ausnahmen
Dieser Abschnitt enthält die Benachrichtigungen und Apps, die von der Verhaltensänderung bei der Berechtigung zum Senden von Benachrichtigungen ausgenommen sind. Wenn der Nutzer unter Android 13 (API‑Level 33) oder höher die Benachrichtigungsberechtigung ablehnt, werden ihm weiterhin Benachrichtigungen zu Diensten im Vordergrund im Task-Manager angezeigt, aber nicht auf der Benachrichtigungsleiste.
Mediensitzungen
Benachrichtigungen zu Mediensitzungen sind von dieser Verhaltensänderung ausgenommen.
Apps, die für die Selbstverwaltung von Telefonanrufen konfiguriert sind
Wenn Ihre App für die Selbstverwaltung von Telefonanrufen konfiguriert ist, benötigen Sie die
POST_NOTIFICATIONS Berechtigung nicht, damit Ihre App Benachrichtigungen senden kann, die
den Notification.CallStyle Benachrichtigungsstil verwenden.
Das System geht davon aus, dass Ihre App für die Selbstverwaltung von Telefonanrufen konfiguriert ist, wenn sie Folgendes tut:
- Die Berechtigung
MANAGE_OWN_CALLSdeklariert. - Die Schnittstelle
ConnectionServiceimplementiert. - Sich beim Telekommunikationsanbieter des Geräts registriert, indem sie
registerPhoneAccount()aufruft.
App testen
Sie können prüfen, wie sich die Berechtigung zum Senden von Benachrichtigungen auf Ihre App auswirkt, wenn sie zum ersten Mal auf einem Gerät mit Android 13 oder höher verwendet wird. Mit den folgenden Android Debug Bridge-Befehlen (ADB) können Sie die häufigsten Sequenzen von Nutzerauswahlen und Geräteupgrades simulieren, ohne Ihr Testgerät zurücksetzen zu müssen:
App wird neu auf einem Gerät mit Android 13 oder höher installiert:
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-fixedDer Nutzer lässt Benachrichtigungen aktiviert, wenn die App auf einem Gerät mit 12L oder niedriger installiert ist, und das Gerät wird dann auf Android 13 oder höher aktualisiert:
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-fixedDer Nutzer deaktiviert Benachrichtigungen manuell, wenn die App auf einem Gerät mit 12L oder niedriger installiert ist, und das Gerät wird dann auf Android 13 oder höher aktualisiert:
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
Best Practices
In diesem Abschnitt werden verschiedene Möglichkeiten beschrieben, wie Sie die neue Benachrichtigungsberechtigung in Ihrer App am effektivsten nutzen können.
Ziel-SDK-Version Ihrer App aktualisieren
Wenn Sie Ihrer App mehr Flexibilität bei der Anzeige des Berechtigungsdialogfelds geben möchten, aktualisieren Sie Ihre App so, dass sie auf Android 13 oder höher ausgerichtet ist.
Warten, bis die Berechtigung zum Senden von Benachrichtigungen angezeigt wird
Bevor Sie Nutzer bitten, Berechtigungen zu erteilen, sollten Sie ihnen die Möglichkeit geben, sich mit Ihrer App vertraut zu machen.
Neue Nutzer möchten die App vielleicht erst einmal erkunden und die Vorteile der einzelnen Benachrichtigungsanfragen selbst erleben. Sie können eine Berechtigungsaufforderung durch eine Nutzeraktion auslösen. In der folgenden Liste finden Sie einige Beispiele dafür, wann es ein guter Zeitpunkt ist, die Aufforderung zur Erteilung der Berechtigung zum Senden von Benachrichtigungen anzuzeigen:
- Der Nutzer tippt auf eine Schaltfläche mit einer Benachrichtigungsglocke.
- Der Nutzer entscheidet sich, dem Social-Media-Konto einer anderen Person zu folgen.
- Der Nutzer gibt eine Bestellung für die Lieferung von Lebensmitteln auf.
Abbildung 1 zeigt einen empfohlenen Workflow für die Anforderung der Benachrichtigungsberechtigung. Sofern shouldShowRequestPermissionRationale() nicht
true zurückgibt, muss Ihre App den mittleren Bildschirm nicht anzeigen, der den
Titel „Benachrichtigungen erhalten!“ hat. In Compose können Sie die aktuelle Activity finden, indem Sie auf LocalContext.current zugreifen und sie in eine Activity umwandeln.
Alternativ können Sie festlegen, dass eine Anfrage angezeigt wird, nachdem Sie Nutzern die Möglichkeit gegeben haben, sich mit Ihrer App vertraut zu machen. Sie können beispielsweise warten, bis der Nutzer Ihre App zum dritten oder vierten Mal startet.
shouldShowRequestPermissionRationale() true zurückgibt.
Berechtigung anfordern
Wenn Sie die Berechtigung in Ihrer Compose-UI anfordern möchten, verwenden Sie die
rememberLauncherForActivityResult() API mit dem
ActivityResultContracts.RequestPermission() Vertrag.
Das folgende Snippet zeigt, wie Sie die Berechtigung zum Senden von Benachrichtigungen als Reaktion auf eine Nutzerinteraktion anfordern:
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")
}
Berechtigung im Kontext anfordern
Wenn Sie Benachrichtigungsberechtigungen in Ihrer App anfordern, tun Sie dies im richtigen Kontext, damit explizit klar ist, wofür die Benachrichtigungen verwendet werden und warum der Nutzer sie aktivieren sollte. In einer E‑Mail-App können Sie beispielsweise Optionen zum Senden von Benachrichtigungen für jede neue E‑Mail oder nur für E‑Mails anbieten, bei denen der Nutzer der einzige Empfänger ist.
Nutzen Sie diese Gelegenheit, um Ihre Absichten transparent zu machen. Dann ist es wahrscheinlicher, dass Nutzer Ihrer App die Benachrichtigungsberechtigung erteilen.
Prüfen, ob Ihre App Benachrichtigungen senden kann
Bevor Ihre App eine Benachrichtigung sendet, prüfen Sie, ob der Nutzer
Benachrichtigungen für Ihre App aktiviert hat. Rufen Sie dazu areNotificationsEnabled() auf.
Berechtigung verantwortungsvoll verwenden
Nachdem Sie die Genehmigung zum Senden von Benachrichtigungen erhalten haben, verwenden Sie die Berechtigung verantwortungsvoll. Nutzer können die Anzahl der täglichen Benachrichtigungen sehen, die Ihre App sendet, und sie können die Berechtigung jederzeit widerrufen.