Laufzeitberechtigung für Benachrichtigungen

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 weiterhin auf Android 12L (API-Level 32) oder niedriger ausrichten, haben Sie weniger Flexibilität bei der Anfrage der Berechtigung im Kontext der Funktionalität Ihrer App.

Berechtigung deklarieren

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 ...>
    <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:

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:

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 erfüllt die Voraussetzungen für eine Ausnahme. 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 auch nur einmal auf Nicht zulassen tippt, wird er erst wieder gefragt, wenn eines der folgenden Ereignisse eintritt:

  • Der Nutzer deinstalliert Ihre App und installiert sie anschließend neu.
  • Sie aktualisieren Ihre App auf Android 13 oder höher.

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. Nutzen Sie diese Gelegenheit, um den Nutzern zu erklären, warum die App diese Berechtigung benötigt, und sie zu bitten, sie zu gewähren.
  • 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 Android 12L oder niedriger deaktiviert hat, bleibt diese Ablehnung bestehen, wenn das Gerät auf Android 13 oder höher aktualisiert wird.

Ausnahmen

In diesem Abschnitt finden Sie Benachrichtigungen und Apps, die von der Änderung des Benachrichtigungsberechtigungsverhaltens 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, benötigen Sie die Berechtigung POST_NOTIFICATIONS nicht, damit Ihre App Benachrichtigungen im Stil Notification.CallStyle senden kann.

Das System geht davon aus, dass Ihre App für die selbständige Verwaltung von Telefonanrufen konfiguriert ist, wenn sie Folgendes tut:

  1. Hier wird die Berechtigung MANAGE_OWN_CALLS deklariert.
  2. Implementiert die ConnectionService-Schnittstelle.
  3. Registriert sich beim Mobilfunkanbieter des Geräts, indem registerPhoneAccount() angerufen wird.

App testen

Sie können prüfen, wie sich die Berechtigung für 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 (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 Android 12L oder niedriger installiert ist. Anschließend wird das Gerät auf Android 13 oder höher umgestellt:

    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 können die App ausprobieren und die Vorteile der einzelnen Benachrichtigungsanfragen selbst erleben. Sie können einen Berechtigungsprompt über 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 entscheidet sich, einem Social-Media-Konto 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 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.

Nachdem sich der Nutzer angemeldet hat, wird ihm eine Einladung angezeigt, sich über Fahrtupdates benachrichtigen zu lassen. Nachdem der Nutzer auf die Schaltfläche „Ok“ 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() 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-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. So sind Nutzer eher bereit, Ihrer App die Berechtigung für Benachrichtigungen zu 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.

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.