Benachrichtigungen in Android 13 verwenden ein Opt-in-Modell. Das ist eine Änderung gegenüber früheren Android-Versionen, in denen ein Opt-out-Modell verwendet wurde. Unter Android 13 müssen alle Apps Nutzer um Erlaubnis bitten, bevor sie Benachrichtigungen senden. Dieses Modell trägt dazu bei, Unterbrechungen durch Benachrichtigungen zu reduzieren, Informationsüberlastung zu minimieren und Nutzern die Möglichkeit zu geben, zu steuern, welche Benachrichtigungen angezeigt werden, basierend darauf, was für sie wichtig ist. Um das Opt-in-Modell zu unterstützen, müssen OEMs Änderungen an den Benachrichtigungs- und Laufzeitberechtigungssystemen vornehmen.
Auf dieser Seite wird beschrieben, was OEMs implementieren müssen, um diese Änderung zu unterstützen, und wie die Implementierung validiert wird.
Änderungen für Opt-in-Benachrichtigungen implementieren
Ab Android 13 müssen Apps ihre Absicht, Benachrichtigungen zu senden, deklarieren, indem sie die Laufzeitberechtigung android.permission.POST_NOTIFICATION
vom System anfordern, bevor sie Benachrichtigungen senden können.
In Android 13 und höher wird die Einstellung, die bestimmt, ob eine App Benachrichtigungen an den Nutzer senden kann, im Berechtigungssystem gespeichert. Vor Android 13 wurde diese Einstellung im Benachrichtigungssystem gespeichert. Daher müssen OEMs die vorhandenen Benachrichtigungsdaten dazu, ob eine App Benachrichtigungen senden darf, vom Benachrichtigungssystem in das System für Laufzeitberechtigungen migrieren. Außerdem müssen OEMs vorhandene APIs im Benachrichtigungssystem beibehalten, die diese Daten für App-Entwickler verfügbar machen.
Änderungen an den Benachrichtigungs- und Berechtigungssystemen basieren auf dem Opt-in-Modell für das Benachrichtigungsverhalten von Nutzern und werden im Abschnitt Implementierungsrichtlinien beschrieben.
Verhalten von Nutzerbenachrichtigungen in einem Opt-in-Modell
In der folgenden Tabelle wird das Benachrichtigungsverhalten für verschiedene App-Versionen auf einem Gerät mit Android 13 veranschaulicht:
Gerät mit Android 13 | Apps, die auf Android 13 oder höher ausgerichtet sind | Apps, die auf Versionen unter Android 13 ausgerichtet sind |
---|---|---|
Neuinstallation | Benachrichtigungen werden blockiert, bis die App dazu auffordert.
Apps steuern, wann sie nach Berechtigungen fragen. |
Benachrichtigungen werden blockiert, bis das Betriebssystem dazu auffordert.
Die Berechtigung wird beim ersten Ausführen der App angefordert. |
Vorhandene App (Upgrade) | Benachrichtigungen sind zulässig, bis die App dazu auffordert.
Die temporäre Berechtigung wird erteilt, bis die App beim ersten entsprechenden Lauf danach fragt. |
Benachrichtigungen sind zulässig, bis das Betriebssystem Sie dazu auffordert.
Die temporäre Berechtigung wird bis zum ersten Ausführen der App erteilt. |
Richtlinien für die Implementierung
Eine Referenzimplementierung finden Sie unter Benachrichtigungsdienst, Berechtigungsdienst und Richtliniendienst. Informationen zum Implementieren von Ausnahmen für Standardberechtigungs-Handler finden Sie unter Laufzeitberechtigungen.
Beachten Sie bei der Implementierung die folgenden Richtlinien zum Verhalten von Nutzermitteilungen für Apps, die auf Android 13 oder niedrigere SDKs ausgerichtet sind:
- Neu installierte Apps auf einem Android 13-Gerät dürfen keine Benachrichtigung senden, ohne dass der Nutzer eine Berechtigungsaufforderung genehmigt hat.
- Wenn die App auf Android 13 und höher ausgerichtet ist, müssen Benachrichtigungen blockiert werden, bis die App dazu auffordert, da die App steuert, wann und ob die Nutzerberechtigung angefordert wird.
- Wenn die App auf Versionen unter Android 13 ausgerichtet ist, müssen Benachrichtigungen blockiert werden, bis das Betriebssystem dazu auffordert. Das Betriebssystem muss die Berechtigungsanfrage beim ersten Ausführen der App anzeigen.
Jede App, die vor einem Upgrade auf Android 13 auf dem Gerät vorhanden war, oder jede App, die über die Sicherung und Wiederherstellung wiederhergestellt wurde, darf Benachrichtigungen senden, bis der Nutzer zum ersten Mal eine Aktivität aus dieser App startet.
Wenn die App auf das SDK von Android 13 oder höher ausgerichtet ist und der Nutzer die Benachrichtigungseinstellungen für diese App nicht zuvor auf App- oder
NotificationChannel
-Ebene angepasst hat, widerrufen Sie die temporäre Berechtigung. Apps müssen den Nutzer dann um Erlaubnis bitten, bevor sie weiterhin Benachrichtigungen senden dürfen.Wenn eine aktualisierte App, die auf Android 13 ausgerichtet ist, derzeit nicht über die Benachrichtigungsberechtigung durch die temporäre Upgrade-Gewährung verfügt und der Nutzer sie mindestens einmal gestartet hat, muss die App eine Aufforderung zur Benachrichtigungsberechtigung anzeigen, bevor sie weitere Dienste im Vordergrund ausführen darf.
Bei Apps mit einem Target SDK unter Android 13 muss der erste Aktivitätsstart nach dem Erstellen mindestens eines
NotificationChannel
abgefangen werden, um eine Berechtigungsaufforderung anzuzeigen, in der der Nutzer gefragt wird, ob er Benachrichtigungen von der App erhalten möchte.Wenn ein Nutzer zuvor Benachrichtigungseinstellungen auf App- oder
NotificationChannel
-Ebene für eine App auf dem Gerät, das aktualisiert wird, oder in einem Backup, das auf dem Gerät wiederhergestellt wird, angepasst hat, muss die Einstellung auf App-Ebene mit dem FlagFLAG_PERMISSION_USER_SET
in das Berechtigungssystem migriert werden. Dem Nutzer darf keine weitere Aufforderung zur Erteilung der Berechtigung für Benachrichtigungen angezeigt werden, es sei denn, die App fordert dies ausdrücklich an.
Sicherungs- und Wiederherstellungsvorgänge müssen zwischen einem Gerät mit Android 13 und einem Gerät mit einer früheren Betriebssystemversion abwärts- und aufwärtskompatibel sein. Sicherungsdaten, die auf einem Gerät mit Android 13 generiert wurden, müssen auf einem Gerät mit einer früheren Betriebssystemversion wiederhergestellt werden. Sicherungsdaten, die auf einem Gerät mit einer früheren Betriebssystemversion generiert wurden, müssen auf einem Gerät mit Android 13 wiederhergestellt werden.
Media-Benachrichtigungen, die mit der laufenden Medienwiedergabe verknüpft sind, müssen von der Berechtigung zum Senden von Benachrichtigungen ausgenommen werden.
Änderungen an den Benachrichtigungs- und Berechtigungssystemen validieren
Führen Sie die folgenden Tests aus, um die Implementierung zu validieren:
Einheitentests gemäß
PreferencesHelperTest
,NotificationManagerServiceTest
.Alle manuellen Tests, bei denen Upgrades sowie Sicherung und Wiederherstellung getestet werden.
Alle CTS-Berechtigungs- und Benachrichtigungssystemtests, bei denen Benachrichtigungen gesendet werden. Einige dieser Tests befinden sich in cts/tests/tests/permission/, NotificationManagerTest.java und cts/tests/tests/notificationlegacy/.