Laufzeitberechtigung für Benachrichtigungen

Android 13 (API-Level 33) und höher unterstützt eine Laufzeitberechtigung zum Senden von nicht ausgenommenen Benachrichtigungen (einschließlich Dienste im Vordergrund) von einer App: POST_NOTIFICATIONS. Durch diese Änderung können sich Nutzer auf die für sie wichtigsten Benachrichtigungen konzentrieren.

Wir empfehlen dringend, so schnell wie möglich eine Ausrichtung auf Android 13 oder höher vorzunehmen, um die zusätzliche Kontrolle und Flexibilität dieser Funktion zu nutzen. Wenn Sie weiterhin auf 12L (API-Level 32) oder niedriger ausgerichtet sind, verlieren Sie eine gewisse Flexibilität, wenn Sie die Berechtigung im Kontext der Funktion Ihrer App anfordern.

Berechtigung deklarieren

Wenn du die neue Berechtigung zum Senden von Benachrichtigungen von deiner App anfordern möchtest, aktualisiere sie auf Android 13 und führe einen ähnlichen Vorgang wie beim Anfordern anderer Laufzeitberechtigungen aus, wie in den folgenden Abschnitten beschrieben.

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>

Die App-Funktionen hängen von der Nutzerauswahl im Berechtigungsdialogfeld ab

In diesem Dialogfeld stehen Nutzern die folgenden Aktionen zur Verfügung:

In den folgenden Abschnitten wird das Verhalten Ihrer Anwendung abhängig von der Aktion des Nutzers beschrieben.

Der Nutzer wählt „Zulassen“ aus

Wenn der Nutzer die Option allow auswählt, hat Ihre App folgende Möglichkeiten:

Nutzer wählt „Nicht zulassen“ aus

Wenn der Nutzer die Option Nicht zulassen auswählt, kann Ihre Anwendung nur dann Benachrichtigungen senden, wenn sie für eine Ausnahme infrage kommt. Alle Benachrichtigungskanäle werden mit Ausnahme einiger bestimmter Rollen blockiert. Dies ähnelt dem Verhalten, das auftritt, wenn der Nutzer alle Benachrichtigungen für Ihre App in den Systemeinstellungen manuell deaktiviert.

Achtung:Wenn Ihre App auf 12 l oder weniger ausgerichtet ist und der Nutzer nur einmal auf Nicht zulassen tippt, wird er nicht noch einmal aufgefordert, bis einer der folgenden Fälle eintritt:

  • Der Nutzer deinstalliert die App und installiert sie neu.
  • Aktualisieren Sie Ihre App auf Android 13 oder höher.

Nutzer wischt aus dem Dialogfeld weg

Wenn der Nutzer vom Dialogfeld wegwischt, also weder Zulassen noch Nicht zulassen auswählt, ä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 der 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.

Wie das Dialogfeld mit Berechtigungen angezeigt wird, hängt von der SDK-Zielversion 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 fordern Sie sie auf, sie zu erteilen.
  • Wenn Ihre App auf 12L (API-Level 32) oder niedriger ausgerichtet ist, zeigt das System den Berechtigungsdialog 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. Dies geschieht normalerweise beim Start der App.

Auswirkungen auf Updates bestehender Apps

Um Störungen im Zusammenhang mit der Berechtigung zum Senden von Benachrichtigungen zu minimieren, gewährt das System die Berechtigung automatisch allen zulässigen 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 für die Laufzeitberechtigung.

Voraussetzungen für die Vorerteilung der Berechtigung

Damit Ihre App für eine automatische Vorabzuweisung qualifiziert ist, muss sie einen vorhandenen Benachrichtigungskanal haben und Benachrichtigungen dürfen nicht explizit vom Nutzer auf einem Gerät mit 12L oder niedriger deaktiviert werden.

Wenn der Nutzer Benachrichtigungen für deine App auf einem Gerät mit 12 L oder weniger deaktiviert hat, bleibt diese Ablehnung erhalten, wenn das Gerät auf Android 13 oder höher aktualisiert wird.

Ausnahmen

Dieser Abschnitt enthält die Reihe der Benachrichtigungen und Apps, die von der Änderung des Verhaltens der Benachrichtigungsberechtigungen ausgenommen sind. Wenn der Nutzer unter Android 13 (API-Level 33) oder höher die Berechtigung zum Senden von Benachrichtigungen ablehnt, werden ihm im Task-Manager weiterhin Hinweise zu Diensten im Vordergrund angezeigt, die jedoch nicht auf der Benachrichtigungsleiste angezeigt werden.

Mediensitzungen

Benachrichtigungen im Zusammenhang mit Mediensitzungen sind von dieser Verhaltensänderung ausgenommen.

Apps, die für die eigene Verwaltung von Anrufen konfiguriert sind

Wenn deine App so konfiguriert ist, dass sie Anrufe selbst verwaltet, benötigst du die Berechtigung POST_NOTIFICATIONS nicht, um Benachrichtigungen im Benachrichtigungsstil Notification.CallStyle zu senden.

Das System geht davon aus, dass Ihre App so konfiguriert ist, dass sie selbst Anrufe verwaltet, wenn eine der folgenden Aktionen ausgeführt wird:

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

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 Gruppen von Android Debug Bridge-Befehlen (ADB) können Sie die gängigsten Sequenzen von Nutzerauswahlen und Geräteupgrades simulieren, ohne das Testgerät zurücksetzen zu müssen:

  • Die App wird auf einem Gerät mit Android 13 oder höher neu 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 12 L oder weniger installiert wird. 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 12 L oder weniger installiert ist. Anschließend wird das Gerät 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 mehrere Möglichkeiten beschrieben, wie Sie die neue Benachrichtigungsberechtigung am effektivsten in Ihrer App nutzen können.

SDK-Zielversion der App aktualisieren

Wenn du deiner App mehr Flexibilität bei der Anzeige des Berechtigungsdialogs geben möchtest, aktualisiere sie so, dass sie auf Android 13 oder höher ausgerichtet ist.

Warten Sie, bis die Berechtigungsaufforderung für Benachrichtigungen angezeigt wird

Bevor Sie Nutzer um Berechtigungen bitten, lassen Sie sich mit Ihrer App vertraut machen.

Neue Nutzer möchten die App vielleicht kennenlernen und aus erster Hand von den Vorteilen der einzelnen Benachrichtigungsanfragen profitieren. Sie können durch eine Nutzeraktion eine Berechtigungsaufforderung auslösen. Die folgende Liste zeigt mehrere Beispiele für Fälle, in denen die Aufforderung zur Berechtigung für Benachrichtigungen angezeigt werden sollte:

  • Die Nutzenden tippen auf die Schaltfläche „Benachrichtigungsglocke“.
  • Der Nutzer folgt dem Social-Media-Konto einer Person.
  • Die nutzende Person gibt eine Bestellung für eine Lebensmittellieferung auf.

Abbildung 1 zeigt einen empfohlenen Workflow für das Anfordern der Benachrichtigungsberechtigung. Sofern shouldShowRequestPermissionRationale() nicht true zurückgibt, muss in deiner App nicht der mittlere Bildschirm angezeigt werden, also den Bildschirm mit dem Titel „Benachrichtigungen erhalten!“.

Alternativ können Sie festlegen, dass eine Anfrage angezeigt wird, nachdem Sie Nutzern die Möglichkeit gegeben haben, sich mit Ihrer Anwendung vertraut zu machen. Sie können beispielsweise warten, bis der Nutzer Ihre Anwendung zum dritten oder vierten Mal startet.

Nachdem sich der Nutzer angemeldet hat, wird er eingeladen, über Updates zu Fahrten informiert zu werden. Nachdem der Nutzer auf die Schaltfläche „Ich bin an“ geklickt hat, fordert die App die neue Berechtigung an, wodurch das Systemdialogfeld angezeigt wird.
Abbildung 1: Ein empfohlener nutzergesteuerter Workflow zum Anfordern der Berechtigung zum Senden von Benachrichtigungen Der mittlere Bildschirm ist nur erforderlich, wenn shouldShowRequestPermissionRationale() true zurückgibt.

Berechtigung im Kontext anfordern

Wenn Sie Berechtigungen zum Senden von Benachrichtigungen in Ihrer App anfordern, tun Sie dies im richtigen Kontext, damit klar ist, wofür die Benachrichtigungen verwendet werden und warum der Nutzer zustimmen sollte. Beispielsweise kann eine E-Mail-Anwendung 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 Möglichkeit, um deine Absichten transparent zu machen, und Nutzer geben eher die Berechtigung zum Senden von Benachrichtigungen an deine App.

Prüfen, ob deine App Benachrichtigungen senden kann

Bevor deine App eine Benachrichtigung sendet, musst du prüfen, ob der Nutzer Benachrichtigungen für deine App aktiviert hat. Rufe dazu areNotificationsEnabled() auf.

Nutzung der Berechtigung verantwortungsvoll

Nachdem Sie die Genehmigung zum Senden von Benachrichtigungen erhalten haben, denken Sie daran, diese Berechtigung verantwortungsvoll zu nutzen. Nutzer können die Anzahl der täglichen Benachrichtigungen sehen, die Ihre App sendet, und sie können die Berechtigung jederzeit widerrufen.