Les notifications dans Android 13 utilisent un modèle d'activation, ce qui diffère des versions précédentes d'Android, qui utilisent un modèle de désactivation. Sous Android 13, toutes les applications doivent demander aux utilisateurs l'autorisation avant d'envoyer des requêtes de notification. Ce modèle permet de réduire les interruptions liées aux notifications, de limiter la surcharge d'informations et d'aider les utilisateurs à contrôler les notifications qui s'affichent en fonction de ce qui est important pour eux. Pour accepter le modèle d'activation, les OEM doivent apporter des modifications aux systèmes de notification et d'autorisation d'exécution.
Cette page décrit ce que les OEM doivent implémenter pour prendre en charge ce changement et comment valider l'implémentation.
Implémenter les modifications apportées aux notifications nécessitant une confirmation
À partir d'Android 13, les applications doivent déclarer leur intent pour envoyer des notifications en demandant l'autorisation d'exécution android.permission.POST_NOTIFICATION
au système avant de pouvoir envoyer des notifications.
Sous Android 13 ou version ultérieure, le paramètre qui détermine si une application peut envoyer des notifications à l'utilisateur est stocké dans le système d'autorisations. Avant Android 13, ce paramètre était stocké dans le système de notification. Par conséquent, les OEM doivent migrer les données de notification existantes indiquant si une application est autorisée à envoyer des notifications depuis le système de notification vers le système d'autorisation d'exécution. Les OEM doivent également gérer les API existantes dans le système de notification qui présentent ces données aux développeurs d'applications.
Les modifications apportées aux systèmes de notification et d'autorisation sont basées sur le modèle d'activation du comportement des notifications utilisateur et sont décrites dans la section Consignes d'implémentation.
Comportement des notifications utilisateur dans un modèle d'acceptation
Le tableau suivant illustre le comportement des notifications pour différentes versions de l'application sur un appareil équipé d'Android 13:
Appareil sous Android 13 | Applications ciblant Android 13 ou version ultérieure | Applications ciblant des versions antérieures à Android 13 |
---|---|---|
Nouvelle installation | Les notifications sont bloquées jusqu'à ce que l'application vous invite à les activer.
Les applications contrôlent le moment où elles doivent demander une autorisation. |
Les notifications sont bloquées jusqu'à ce que le système d'exploitation y invite.
L'autorisation est demandée lors du premier lancement de l'application. |
Application existante (mise à niveau) | Les notifications sont autorisées jusqu'à ce que l'application vous invite à les désactiver.
L'autorisation temporaire est accordée jusqu'à ce que l'application demande l'autorisation lors de la première exécution éligible. |
Les notifications sont autorisées jusqu'à ce que l'OS vous invite à les désactiver.
L'autorisation temporaire est accordée jusqu'à la première exécution de l'appli. |
Consignes d'implémentation
Pour la mise en œuvre de référence, reportez-vous aux sections service de notification, service d'autorisations et service de règles. Pour implémenter des exceptions pour les gestionnaires d'autorisations par défaut, consultez la section Autorisations d'exécution.
Lors de l'implémentation, suivez les consignes suivantes concernant le comportement des notifications utilisateur pour les applications ciblant les SDK Android 13 ou versions antérieures:
- Les applications récemment installées sur un appareil Android 13 ne doivent pas envoyer de notification sans que l'utilisateur n'ait approuvé une invite d'autorisation.
- Si l'application cible les versions Android 13 et ultérieures, les notifications doivent être bloquées jusqu'à ce que l'application le demande, car elle contrôle quand et si elle doit demander l'autorisation de l'utilisateur.
- Si l'application cible des versions antérieures à Android 13, les notifications doivent être bloquées jusqu'à ce que l'OS les demande. L'OS doit afficher l'invite d'autorisation lors du premier lancement de l'application.
Toute application qui existait sur l'appareil avant la mise à niveau vers Android 13 ou toute application qui a été restaurée via la sauvegarde et la restauration doit être autorisée à envoyer des notifications jusqu'à la première fois que l'utilisateur lance une activité à partir de cette application.
Pour les applications qui ciblent le SDK Android 13 ou version ultérieure, si l'utilisateur n'a pas déjà personnalisé les paramètres de notification pour cette application au niveau de l'application ou de
NotificationChannel
, révoquez l'autorisation temporaire. Les applications doivent ensuite demander l'autorisation à l'utilisateur avant de pouvoir continuer à envoyer des notifications.Si une application mise à niveau ciblant Android 13 ne dispose actuellement pas de l'autorisation de notification via l'autorisation de mise à niveau temporaire et que l'utilisateur l'a lancée au moins une fois, l'application doit afficher une invite d'autorisation de notification avant de pouvoir exécuter d'autres services de premier plan.
Pour les applications dont le SDK cible est antérieur à Android 13, interceptez le premier lancement de l'activité une fois que l'application a créé au moins une
NotificationChannel
pour afficher une invite d'autorisation demandant si l'utilisateur souhaite recevoir des notifications de l'application.Si un utilisateur a précédemment personnalisé les paramètres de notification au niveau de l'application ou de
NotificationChannel
pour une application sur l'appareil en cours de mise à niveau ou dans une sauvegarde en cours de restauration sur l'appareil, le paramètre au niveau de l'application doit être migré vers le système d'autorisation avec l'indicateurFLAG_PERMISSION_USER_SET
. Aucune autre invite d'autorisation de notification ne doit être présentée à l'utilisateur, sauf si l'application le demande spécifiquement.
La sauvegarde et la restauration doivent être rétrocompatibles et compatibles avec les versions ultérieures entre un appareil Android 13 et un appareil équipé d'une version antérieure de l'OS. Les données de sauvegarde générées à partir d'un appareil Android 13 doivent être restaurées sur une version antérieure de l'OS, et les données de sauvegarde d'une version antérieure de l'OS doivent être restaurées sur un appareil Android 13.
Les notifications multimédias associées à la lecture multimédia en cours doivent être exemptées de l'autorisation de notification.
Valider les modifications apportées aux systèmes de notification et d'autorisation
Pour valider l'implémentation, exécutez les tests suivants:
Tests unitaires, comme indiqué dans
PreferencesHelperTest
,NotificationManagerServiceTest
.Tout test manuel qui teste les mises à niveau, la sauvegarde et la restauration.
Tout test système d'autorisation et de notification CTS qui envoie des notifications. Certains de ces tests sont situés dans cts/tests/tests/permission/, NotificationManagerTest.java et cts/tests/tests/notificationlegacy/.