Laufzeitberechtigung für Benachrichtigungen

Unter Android 13 (API‑Level 33) und höher wird eine Laufzeitberechtigung zum Senden von nicht ausgenommenen Benachrichtigungen (einschließlich Diensten im Vordergrund) aus einer App unterstützt: POST_NOTIFICATIONS. Diese Änderung soll Nutzern helfen, sich auf die für sie wichtigsten Benachrichtigungen zu konzentrieren.

Wir empfehlen dringend, so schnell wie möglich Android 13 oder höher als Ziel zu verwenden, um von der zusätzlichen Kontrolle und Flexibilität dieser Funktion zu profitieren. Wenn Sie weiterhin auf Android 12L (API‑Level 32) oder niedriger ausgerichtet sind, haben Sie weniger Flexibilität beim Anfordern der Berechtigung im Kontext der Funktionen Ihrer App.

Berechtigung deklarieren

Wenn Sie die neue Berechtigung für Benachrichtigungen in Ihrer App anfordern möchten, müssen Sie Ihre App so aktualisieren, dass sie auf Android 13 ausgerichtet ist. Außerdem müssen Sie einen ähnlichen Prozess wie beim Anfordern anderer Laufzeitberechtigungen durchlaufen, wie in den folgenden Abschnitten beschrieben.

Die Berechtigung, die Sie in der Manifestdatei Ihrer App deklarieren müssen, ist im folgenden Code-Snippet zu sehen:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATI>ONS&q<uot;/
    appli>cation ...
      <  ...
    /ap<plication>
/manifest

App-Funktionen hängen von der Auswahl des Nutzers im Berechtigungsdialogfeld ab

In diesem Dialogfeld haben Nutzer folgende Möglichkeiten:

In den folgenden Abschnitten wird beschrieben, wie sich Ihre App verhält, je nachdem, welche Aktion der Nutzer ausführt.

Der Nutzer wählt „Zulassen“ aus.

Wenn der Nutzer die Option Zulassen auswählt, kann Ihre App Folgendes tun:

Der 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 fällt unter eine Ausnahmeregelung. Alle Benachrichtigungskanäle sind blockiert, mit Ausnahme einiger bestimmter Rollen. Das Verhalten ist ähnlich dem, das auftritt, wenn der Nutzer in den Systemeinstellungen alle Benachrichtigungen für Ihre App manuell deaktiviert.

Achtung:Wenn Ihre App auf Android 12L oder niedriger ausgerichtet ist und der Nutzer auch nur einmal auf Nicht zulassen tippt, wird er erst wieder aufgefordert, wenn einer der folgenden Fälle eintritt:

  • Der Nutzer deinstalliert und installiert Ihre App neu.
  • Sie aktualisieren Ihre App, sodass sie auf Android 13 oder höher ausgerichtet ist.

Nutzer wischt vom Dialogfeld weg

Wenn der Nutzer den Dialog schließt, ohne Zulassen oder Nicht zulassen auszuwählen, ändert sich der Status der Benachrichtigungsberechtigung 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 mit dem Senden von Benachrichtigungen warten, bis Sie die neue Berechtigung angefordert haben und der Nutzer Ihrer App diese Berechtigung erteilt hat.

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 zu ermutigen, 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 Benachrichtigungschannel erstellt haben, oder wenn Ihre App eine Aktivität startet und dann ihren ersten Benachrichtigungschannel erstellt. Dies geschieht in der Regel beim Start der App.

Auswirkungen auf Updates für vorhandene Apps

Um Unterbrechungen im Zusammenhang mit der Benachrichtigungsberechtigung zu minimieren, erteilt das System die Berechtigung automatisch vorab für alle berechtigten Apps, 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 Laufzeitberechtigung.

Voraussetzungen für die Voraberteilung von Berechtigungen

Damit deine App für eine automatische Vorabgewährung infrage kommt, muss sie einen vorhandenen Benachrichtigungskanal haben und ihre Benachrichtigungen dürfen nicht explizit vom Nutzer auf einem Gerät mit Android 12L oder niedriger deaktiviert worden sein.

Wenn der Nutzer Benachrichtigungen für Ihre App auf einem Gerät mit Android 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 Benachrichtigungsberechtigungen ausgenommen sind. Unter Android 13 (API-Level 33) oder höher werden Benachrichtigungen im Zusammenhang mit Vordergrunddiensten weiterhin im Task Manager angezeigt, wenn der Nutzer die Benachrichtigungsberechtigung verweigert, aber nicht in der Benachrichtigungsleiste.

Mediensitzungen

Benachrichtigungen zu Mediensitzungen sind von dieser Verhaltensänderung ausgenommen.

Apps, die so konfiguriert sind, dass sie Telefonanrufe selbst verwalten

Wenn Ihre App so konfiguriert ist, dass sie Anrufe selbst verwaltet, benötigen Sie die Berechtigung POST_NOTIFICATIONS nicht, damit Ihre App Benachrichtigungen mit dem Benachrichtigungsstil Notification.CallStyle senden kann.

Das System geht davon aus, dass Ihre App für die Selbstverwaltung von Telefonanrufen konfiguriert ist, wenn sie die folgenden Bedingungen erfüllt:

  1. Deklariert die Berechtigung MANAGE_OWN_CALLS.
  2. Implementiert die ConnectionService-Schnittstelle.
  3. Registriert sich beim Telekommunikationsanbieter des Geräts durch Aufrufen von registerPhoneAccount().

App testen

Sie können prüfen, wie sich die Benachrichtigungsberechtigung auf Ihre App auswirkt, wenn sie zum ersten Mal auf einem Gerät mit Android 13 oder höher verwendet wird. Mit den folgenden Gruppen von Android Debug Bridge (ADB)-Befehlen können Sie die häufigsten Folgen von Nutzerauswahlen und Geräte-Upgrades simulieren, ohne Ihr Testgerät zurücksetzen zu müssen:

  • Die 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-fixed
  • Der Nutzer lässt Benachrichtigungen aktiviert, wenn die App auf einem Gerät mit Android 12L oder niedriger installiert ist, und das Gerät wird 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 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.

SDK-Zielversion Ihrer App aktualisieren

Wenn Sie mehr Flexibilität bei der Anzeige des Berechtigungsdialogfelds wünschen, müssen Sie Ihre App so aktualisieren, dass sie auf Android 13 oder höher ausgerichtet ist.

Warten, bis die Berechtigungsanfrage für Benachrichtigungen angezeigt wird

Bevor Sie Nutzer auffordern, 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 ausprobieren und die Vorteile der einzelnen Benachrichtigungsanfragen selbst erkennen. Sie können einen Berechtigungs-Prompt auslösen, wenn ein Nutzer eine Aktion ausführt. In der folgenden Liste finden Sie einige Beispiele dafür, wann es sinnvoll ist, den Benachrichtigungsberechtigungs-Prompt zu präsentieren:

  • Der Nutzer tippt auf die Schaltfläche „Benachrichtigungsglocke“.
  • Der Nutzer entscheidet sich, dem Social-Media-Konto einer Person zu folgen.
  • 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 Ihre App nicht den mittleren Bildschirm mit dem Titel „Benachrichtigungen erhalten!“ anzeigen.

Alternativ können Sie die Aufforderung auch erst anzeigen lassen, nachdem Nutzer die Möglichkeit hatten, sich mit Ihrer App vertraut zu machen. Sie können beispielsweise warten, bis der Nutzer Ihre App zum dritten oder vierten Mal startet.

Nachdem sich der Nutzer angemeldet hat, wird er aufgefordert, Benachrichtigungen zu Reiseupdates zu aktivieren. Nachdem der Nutzer auf die Schaltfläche „Ich bin drin“ geklickt hat, fordert die App die neue Berechtigung an, wodurch das Systemdialogfeld angezeigt wird.
Abbildung 1: Ein empfohlener nutzergesteuerter Workflow zum Anfordern der Berechtigung für Benachrichtigungen. Der mittlere Bildschirm ist nur erforderlich, wenn shouldShowRequestPermissionRationale() den Wert true zurückgibt.

Berechtigung im Kontext anfordern

Wenn Sie in Ihrer App Berechtigungen für Benachrichtigungen anfordern, tun Sie dies im richtigen Kontext, damit explizit klar ist, wofür die Benachrichtigungen verwendet werden und warum der Nutzer sie aktivieren sollte. Eine E‑Mail-App kann beispielsweise Optionen zum Senden von Benachrichtigungen für jede neue E‑Mail oder nur für E‑Mails enthalten, bei denen der Nutzer der einzige Empfänger ist.

Nutzen Sie diese Gelegenheit, um Ihre Absichten transparent zu machen. Nutzer erteilen Ihrer App dann eher die Berechtigung für Benachrichtigungen.

Prüfen, ob Ihre App Benachrichtigungen senden kann

Bevor Ihre App eine Benachrichtigung sendet, sollten Sie prüfen, ob der Nutzer Benachrichtigungen für Ihre App aktiviert hat. Rufen Sie dazu areNotificationsEnabled() auf.

Verantwortungsvoller Umgang mit der Berechtigung

Nachdem Sie die Genehmigung zum Senden von Benachrichtigungen erhalten haben, müssen Sie die Berechtigung verantwortungsbewusst nutzen. Nutzer können die Anzahl der täglichen Benachrichtigungen sehen, die Ihre App sendet, und die Berechtigung jederzeit widerrufen.