Android 13 (niveau d'API 33) ou version ultérieure prend en charge une autorisation d'exécution pour l'envoi de notifications non exemptées (y compris les services de premier plan) à partir d'une application : POST_NOTIFICATIONS
.
Ce changement aide les utilisateurs à se concentrer sur les notifications les plus importantes pour eux.
Nous vous recommandons vivement de cibler Android 13 ou version ultérieure dès que possible pour bénéficier du contrôle et de la flexibilité supplémentaires de cette fonctionnalité. Si vous continuez à cibler la version 12L (niveau d'API 32) ou une version antérieure, vous perdez en flexibilité en demandant l'autorisation dans le contexte de la fonctionnalité de votre application.
Déclarer l'autorisation
Pour demander la nouvelle autorisation de notification à partir de votre application, mettez-la à jour pour cibler Android 13 et suivez un processus similaire à celui de la demande d'autres autorisations d'exécution, comme indiqué dans les sections suivantes.
L'autorisation que vous devez déclarer dans le fichier manifeste de votre application apparaît dans l'extrait de code suivant:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Les fonctionnalités de l'application dépendent du choix de l'utilisateur dans la boîte de dialogue d'autorisation
Dans cette boîte de dialogue, les utilisateurs ont les actions suivantes à leur disposition:
- Sélectionnez Autoriser.
- Sélectionnez Ne pas autoriser.
- Balayer l'écran pour quitter la boîte de dialogue, sans appuyer sur aucun bouton
Les sections suivantes décrivent le comportement de votre application en fonction de l'action effectuée par l'utilisateur.
L'utilisateur sélectionne "Autoriser".
Si l'utilisateur sélectionne l'option Autoriser, votre application peut effectuer les opérations suivantes:
- Envoyer des notifications Tous les canaux de notification sont autorisés.
- Publiez des notifications liées aux services de premier plan. Ces notifications s'affichent dans le panneau des notifications.
L'utilisateur sélectionne "Ne pas autoriser".
Si l'utilisateur sélectionne l'option Ne pas autoriser, votre application ne peut pas envoyer de notifications, sauf si elle peut bénéficier d'une exception. Tous les canaux de notification sont bloqués, à l'exception de quelques rôles spécifiques. Ce comportement est semblable à celui qui se produit lorsque l'utilisateur désactive manuellement toutes les notifications de votre application dans les paramètres système.
Attention:Si votre application cible 12L ou une version antérieure et que l'utilisateur appuie sur Ne pas autoriser, même une seule fois, il n'est plus invité à le faire tant que l'un des événements suivants ne se produit pas:
- L'utilisateur désinstalle et réinstalle votre application.
- Vous mettez à jour votre application pour qu'elle cible Android 13 ou version ultérieure.
L'utilisateur balaie l'écran pour quitter la boîte de dialogue
Si l'utilisateur balaie la boîte de dialogue (c'est-à-dire qu'il ne sélectionne pas Autoriser ou Ne pas autoriser), l'état de l'autorisation de notification ne change pas.
Effets sur les applications nouvellement installées
Si un utilisateur installe votre application sur un appareil exécutant Android 13 ou une version ultérieure, ses notifications sont désactivées par défaut. Votre application doit attendre d'envoyer des notifications jusqu'à ce que vous demandiez la nouvelle autorisation et que l'utilisateur l'accorde à votre application.
Le moment auquel la boîte de dialogue des autorisations s'affiche dépend de la version du SDK cible de votre application:
- Si votre application cible Android 13 ou une version ultérieure, elle a le contrôle total sur le moment où la boîte de dialogue d'autorisation s'affiche. Profitez de cette occasion pour expliquer aux utilisateurs pourquoi l'application a besoin de cette autorisation et les encourager à l'accorder.
- Si votre application cible 12L (niveau d'API 32) ou une version antérieure, le système affiche la boîte de dialogue d'autorisation la première fois que votre application démarre une activité après avoir créé un canal de notification, ou lorsque votre application démarre une activité, puis crée son premier canal de notification. Cela se produit généralement au démarrage de l'application.
Effets sur les mises à jour d'applications existantes
Pour minimiser les perturbations associées à l'autorisation de notification, le système accorde automatiquement l'autorisation à toutes les applications éligibles lorsque l'utilisateur met à niveau son appareil vers Android 13 ou une version ultérieure. En d'autres termes, ces applications peuvent continuer à envoyer des notifications aux utilisateurs, et les utilisateurs ne voient pas d'invite d'autorisation d'exécution.
Éligibilité à l'autorisation préalable
Pour que votre application soit éligible à une pré-autorisation automatique, elle doit disposer d'un canal de notification existant et ses notifications ne doivent pas être explicitement désactivées par l'utilisateur sur un appareil exécutant 12L ou version antérieure.
Si l'utilisateur a désactivé les notifications pour votre application sur un appareil exécutant 12L ou une version antérieure, ce refus persiste lorsque l'appareil passe à Android 13 ou version ultérieure.
Exceptions
Cette section contient l'ensemble des notifications et des applications qui sont exemptées du changement de comportement des autorisations de notification. Sous Android 13 (niveau d'API 33) ou version ultérieure, si l'utilisateur refuse l'autorisation de notification, il voit toujours les notifications liées aux services de premier plan dans le Gestionnaire des tâches, mais pas dans le volet de notification.
Sessions multimédias
Les notifications liées aux sessions multimédias sont exclues de ce changement de comportement.
Applications configurées pour gérer automatiquement les appels téléphoniques
Si votre application se configure pour gérer elle-même les appels téléphoniques, vous n'avez pas besoin de l'autorisation POST_NOTIFICATIONS
pour qu'elle envoie des notifications qui utilisent le style de notification Notification.CallStyle
.
Le système considère que votre application s'est configurée pour gérer elle-même les appels téléphoniques si elle effectue chacune des opérations suivantes:
- Déclare l'autorisation
MANAGE_OWN_CALLS
- Implémente l'interface
ConnectionService
. - S'enregistre auprès du fournisseur de télécommunications de l'appareil en appelant
registerPhoneAccount()
.
Tester votre application
Vous pouvez évaluer l'impact de l'autorisation de notification sur votre application lors de sa première utilisation sur un appareil exécutant Android 13 ou une version ultérieure. Les ensembles de commandes Android Debug Bridge (ADB) suivants vous permettent de simuler les séquences de choix utilisateur et de mise à niveau d'appareil les plus courantes sans avoir à réinitialiser votre appareil de test:
L'application vient d'être installée sur un appareil équipé d'Android 13 ou version ultérieure:
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
L'utilisateur maintient les notifications activées lorsque l'application est installée sur un appareil exécutant 12L ou une version antérieure, puis que l'appareil passe à Android 13 ou version ultérieure:
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
L'utilisateur désactive manuellement les notifications lorsque l'application est installée sur un appareil exécutant 12L ou une version antérieure, puis que l'appareil passe à Android 13 ou version ultérieure:
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
Bonnes pratiques
Cette section décrit plusieurs façons d'utiliser la nouvelle autorisation de notification de la manière la plus efficace dans votre application.
Mettre à jour la version du SDK cible de votre application
Pour donner à votre application plus de flexibilité sur le moment où la boîte de dialogue d'autorisation s'affiche, mettez-la à jour afin qu'elle cible Android 13 ou une version ultérieure.
Attendre l'invite d'autorisation de notification
Avant de demander aux utilisateurs d'accorder des autorisations, laissez-les se familiariser avec votre application.
Les nouveaux utilisateurs peuvent vouloir explorer l'application et découvrir par eux-mêmes les avantages de chaque demande de notification. Vous pouvez déclencher une invite d'autorisation à partir d'une action de l'utilisateur. La liste suivante présente plusieurs exemples de situations où il est opportun d'afficher l'invite d'autorisation de notification:
- L'utilisateur appuie sur un bouton "sonnette d'alerte".
- L'utilisateur choisit de suivre le compte de réseau social d'une personne.
- L'utilisateur passe une commande de livraison de repas.
La figure 1 illustre le workflow recommandé pour demander l'autorisation de notification. Sauf si shouldShowRequestPermissionRationale()
renvoie true
, votre application n'a pas besoin d'afficher l'écran du milieu, celui dont le titre est "Recevoir des notifications".
Vous pouvez également définir une requête pour qu'elle s'affiche après avoir donné aux utilisateurs la possibilité de se familiariser avec votre application. Par exemple, vous pouvez attendre la troisième ou quatrième fois que l'utilisateur lance votre application.
Demander l'autorisation en contexte
Lorsque vous demandez des autorisations de notification dans votre application, faites-le dans le bon contexte, afin que l'utilisateur sache clairement à quoi servent les notifications et pourquoi il doit les activer. Par exemple, une application de messagerie peut inclure des options permettant d'envoyer des notifications pour chaque nouvel e-mail ou uniquement pour les e-mails dont l'utilisateur est le seul destinataire.
Profitez de cette opportunité pour clarifier vos intentions. Les utilisateurs seront ainsi plus enclins à accorder l'autorisation de notification à votre application.
Vérifier si votre application peut envoyer des notifications
Avant que votre application n'envoie une notification, vérifiez si l'utilisateur a activé les notifications pour votre application. Pour ce faire, appelez areNotificationsEnabled()
.
Utiliser l'autorisation de manière responsable
Une fois que vous avez reçu l'autorisation d'envoyer des notifications, n'oubliez pas de l'utiliser de manière responsable. Les utilisateurs peuvent voir le nombre de notifications quotidiennes envoyées par votre application et révoquer l'autorisation à tout moment.