Laufzeitberechtigung für Benachrichtigungen (original) (raw)
Android 13 (API-Level 33) und höher unterstützt eine Laufzeitberechtigung für das Senden von nicht ausgenommenen Benachrichtigungen (einschließlich Dienste im Vordergrund) von einer App:POST_NOTIFICATIONS. So können sich Nutzer auf die Benachrichtigungen konzentrieren, die für sie am wichtigsten sind.
Wir empfehlen Ihnen dringend, so schnell wie möglich Android 13 oder höher als Zielversion festzulegen, um von der zusätzlichen Kontrolle und Flexibilität dieser Funktion zu profitieren. Wenn Sie Ihr Ziel weiterhin auf 12L (API-Level 32) oder niedriger ausrichten, können Sie die Berechtigung im Kontext der Funktionen Ihrer App anfordern.
Berechtigung erklären
Wenn Sie die neue Berechtigung für Benachrichtigungen für Ihre App anfordern möchten, aktualisieren Sie Ihre App für Android 13 und führen Sie einen ähnlichen Vorgang wie beim Anfordern anderer Laufzeitberechtigungen aus, wie in den folgenden Abschnitten beschrieben.
Die Berechtigung, die Sie in der Manifestdatei Ihrer App angeben müssen, ist im folgenden Code-Snippet zu sehen:
<manifest ...> <application ...> ...
App-Funktionen hängen von der Auswahl des Nutzers im Berechtigungsdialogfeld ab
In diesem Dialogfeld haben Nutzer folgende Möglichkeiten:
- Wählen Sie Zulassen aus.
- Wählen Sie nicht zulassen aus.
- Wischen Sie vom Dialogfeld weg, ohne eine der Schaltflächen zu drücken.
In den folgenden Abschnitten wird beschrieben, wie sich Ihre App je nach Nutzeraktion verhält.
Der 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.
- Posten Sie Benachrichtigungen zu Diensten im Vordergrund. Diese Benachrichtigungen werden in der Benachrichtigungsleiste angezeigt.
Der Nutzer wählt „Nicht zulassen“ aus.
Wenn der Nutzer die Option Nicht zulassen auswählt, kann Ihre App nur dann Benachrichtigungen senden, wenn für sie eine Ausnahme gilt. Alle Benachrichtigungskanäle sind blockiert, mit Ausnahme einiger bestimmter Rollen. Das entspricht dem Verhalten, das auftritt, wenn der Nutzer alle Benachrichtigungen für Ihre App in den Systemeinstellungen manuell deaktiviert.
Achtung:Wenn Ihre App auf Android 12L oder niedriger ausgerichtet ist und der Nutzer auf Nicht zulassen tippt, auch nur einmal, wird er erst dann wieder dazu aufgefordert, wenn eines der folgenden Ereignisse eintritt:
- Der Nutzer deinstalliert Ihre App und installiert sie neu.
- Sie aktualisieren Ihre App, damit sie auf Android 13 oder höher ausgerichtet ist.
Nutzer wischt das Dialogfeld weg
Wenn der Nutzer das Dialogfeld wischt, d. h. weder Zulassen noch Nicht zulassen auswählt, ändert sich der Status der Berechtigung für Benachrichtigungen nicht.
Auswirkungen auf neu installierte Apps
Wenn ein Nutzer Ihre App auf einem Gerät mit Android 13 oder höher installiert, werden die Benachrichtigungen Ihrer App standardmäßig deaktiviert. Ihre App darf erst dann Benachrichtigungen senden, wenn Sie die neue Berechtigung angefordert und der Nutzer sie Ihrer App erteilt hat.
Wann 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, haben Sie die vollständige Kontrolle darüber, wann das Berechtigungsdialogfeld angezeigt wird. Erkläre bei dieser Gelegenheit den Nutzern, warum die App diese Berechtigung benötigt, und ermutige sie, sie zu erteilen.
- Wenn Ihre App auf Android 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 ist in der Regel beim Starten der App der Fall.
Auswirkungen auf Updates vorhandener Apps
Um Unterbrechungen im Zusammenhang mit der Berechtigung für Benachrichtigungen zu minimieren, gewährt das System allen berechtigten Apps automatisch die Berechtigung, wenn der Nutzer sein Gerät auf Android 13 oder höher umstellt. Mit anderen Worten: Diese Apps können weiterhin Benachrichtigungen an Nutzer senden und Nutzer sehen keine Aufforderung zur Laufzeitberechtigung.
Voraussetzungen für die Vorabgenehmigung einer Berechtigung
Damit Ihre App für eine automatische Vorabgenehmigung infrage kommt, muss sie einen Benachrichtigungskanal haben und die Benachrichtigungen dürfen nicht vom Nutzer auf einem Gerät mit Android 12L oder niedriger ausdrücklich 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 Änderung des Verhaltens bei Benachrichtigungsberechtigungen ausgenommen sind. Wenn der Nutzer unter Android 13 (API-Level 33) oder höher die Berechtigung für Benachrichtigungen verweigert, sieht er im Task-Manager weiterhin Benachrichtigungen zu Diensten im Vordergrund, aber nicht im Benachrichtigungs-Pull-down-Menü.
Mediensitzungen
Benachrichtigungen zu Mediensitzungen sind von dieser Verhaltensänderung ausgenommen.
Apps, die für die eigenständige Verwaltung von Telefonanrufen konfiguriert sind
Wenn Ihre App Anrufe selbst verwaltet, ist die Berechtigung POST_NOTIFICATIONS
nicht erforderlich, damit Ihre App Benachrichtigungen im Stil Notification.CallStyle senden kann.
Das System betrachtet Ihre App als selbstverwaltet für die Selbstverwaltung von Telefonanrufen, wenn sie eine der folgenden Aktionen ausführt:
- Deklariert die Berechtigung MANAGE_OWN_CALLS.
- Implementiert die ConnectionService-Schnittstelle.
- Registriert sich durch Aufrufen von registerPhoneAccount() beim Telekommunikationsanbieter des Geräts.
App testen
Du kannst prüfen, wie sich die Berechtigung zum Senden von Benachrichtigungen auf deine 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 (ADB)-Befehlen können Sie die häufigsten Abfolgen von Nutzerentscheidungen und Geräteupdates simulieren, ohne das Testgerät zurücksetzen zu müssen:
- Die App wurde 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-fixed
- Der Nutzer lässt Benachrichtigungen aktiviert, wenn die App auf einem Gerät mit einer Version von 12L oder niedriger installiert ist. Anschließend wird das Gerät 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-fixed
- Der Nutzer deaktiviert Benachrichtigungen manuell, wenn die App auf einem Gerät mit Android 12L oder niedriger installiert ist, und führt dann ein Upgrade auf Android 13 oder höher durch:
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 Berechtigung für Benachrichtigungen in Ihrer App am effektivsten nutzen können.
SDK-Zielversion Ihrer App aktualisieren
Wenn Sie in Ihrer App mehr Flexibilität bei der Anzeige des Berechtigungsdialogfelds haben möchten, aktualisieren Sie Ihre App so, dass sie auf Android 13 oder höher ausgerichtet ist.
Warten, bis die Aufforderung zur Berechtigung für 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 sich vielleicht mit der App vertraut machen und aus erster Hand von den Vorteilen jeder einzelnen Benachrichtigungsanfrage profitieren. Sie können eine Berechtigungsanfrage durch eine Nutzeraktion auslösen. In der folgenden Liste finden Sie einige Beispiele dafür, wann der Prompt zur Berechtigung für Benachrichtigungen angezeigt werden sollte:
- Der Nutzer tippt auf die Schaltfläche „Benachrichtigungsglocke“.
- Der Nutzer folgt dem Social-Media-Konto einer anderen Person.
- Der Nutzer gibt eine Bestellung für die Lieferung von Essen auf.
Abbildung 1 zeigt einen empfohlenen Workflow zum Anfordern der Berechtigung für Benachrichtigungen. Sofern shouldShowRequestPermissionRationale() nicht true
zurückgibt, muss in Ihrer App nicht der mittlere Bildschirm mit dem Titel „Benachrichtigungen erhalten!“ angezeigt werden.
Alternativ können Sie festlegen, dass die Anfrage angezeigt wird, nachdem Sie den 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.
Abbildung 1: Ein empfohlener nutzergesteuerter Workflow zum Anfordern der Berechtigung für Benachrichtigungen. Der mittlere Bildschirm ist nur erforderlich, wenn shouldShowRequestPermissionRationale()
true
zurückgibt.
Berechtigung im Kontext anfordern
Wenn Sie Berechtigungen für Benachrichtigungen in Ihrer App anfordern, tun Sie dies im richtigen Kontext, damit klar ist, wozu die Benachrichtigungen verwendet werden und warum der Nutzer sie aktivieren sollte. Eine E-Mail-Anwendung kann beispielsweise Optionen zum Senden von Benachrichtigungen für jede neue E-Mail oder nur für die E-Mails enthalten, bei denen der Nutzer der einzige Empfänger ist.
Nutze diese Gelegenheit, um deine Absichten transparenter zu machen, damit Nutzer deiner App mit größerer Wahrscheinlichkeit die Berechtigung zum Senden von Benachrichtigungen erteilen.
Prüfen, ob deine 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.
Verantwortungsvoller Umgang mit der Berechtigung
Wenn Sie die Genehmigung zum Senden von Benachrichtigungen erhalten haben, denken Sie daran, die Berechtigung verantwortungsvoll zu verwenden. Nutzer können die Anzahl der täglichen Benachrichtigungen sehen, die Ihre App sendet, und die Berechtigung jederzeit widerrufen.