À partir d'Android 8.0 (niveau d'API 26), toutes les notifications doivent être attribuées à un canal. Pour chaque canal, vous pouvez définir le comportement visuel et auditif appliqué à toutes les notifications de cette chaîne. Les utilisateurs peuvent modifier ces paramètres et déterminez quels canaux de notification de votre appli peuvent être intrusifs ou visible.
Regardez la vidéo ci-dessous pour avoir un aperçu des chaînes et d'autres types de notification fonctionnalités d'Android 8.0.
Les paramètres utilisateur des canaux de notification sont disponibles pour chaque application dans les de votre application, comme illustré dans la figure 1.
Une fois que vous avez créé un canal de notification, vous ne pouvez plus modifier la notification comportements. À ce stade, l'utilisateur dispose d'un contrôle total. Cependant, vous pouvez toujours modifier le nom et la description d'une chaîne
Créez un canal pour chaque type de notification que vous devez envoyer. Vous pouvez également créer des canaux de notification pour refléter les choix faits par les utilisateurs. Par exemple : vous pouvez configurer des canaux de notification distincts pour chaque groupe de conversation créé par un utilisateur dans une application de chat.
Lorsque vous ciblez Android 8.0 (niveau d'API 26) ou une version ultérieure, vous devez implémenter un ou
canaux de notification supplémentaires. Si la valeur de votre targetSdkVersion
est inférieure ou égale à 25,
Lorsque votre application s'exécute sous Android 8.0 (niveau d'API 26) ou version ultérieure, elle se comporte de la même manière.
comme sur les appareils équipés d'Android 7.1 (niveau d'API 25) ou version antérieure.
Créer un canal de notification
Pour créer un canal de notification, procédez comme suit:
Construire un Objet
NotificationChannel
avec un ID de chaîne unique, un nom visible par l'utilisateur et un niveau d'importance.(Facultatif) Spécifiez la description que l'utilisateur voit dans les paramètres système par
setDescription()
Enregistrez le canal de notification en le transmettant à
createNotificationChannel()
L'exemple suivant montre comment créer et enregistrer un canal de notification:
Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel. val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_DEFAULT val mChannel = NotificationChannel(CHANNEL_ID, name, importance) mChannel.description = descriptionText // Register the channel with the system. You can't change the importance // or other notification behaviors after this. val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel) }
Java
private void createNotificationChannel() { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); channel.setDescription(description); // Register the channel with the system. You can't change the importance // or other notification behaviors after this. NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); } }
La recréation d'un canal de notification existant avec ses valeurs d'origine n'entraîne . Vous pouvez donc appeler ce code sans risque au démarrage d'une application.
Par défaut, toutes les notifications publiées sur une chaîne donnée utilisent l'image et
des comportements auditifs définis par le niveau d'importance
NotificationManagerCompat
d'entrée, par exemple
IMPORTANCE_DEFAULT
ou
IMPORTANCE_HIGH
Consultez la section suivante pour en savoir plus sur
niveaux d'importance.
Si vous souhaitez personnaliser davantage
les comportements de notification par défaut de votre chaîne,
vous pouvez appeler des méthodes telles que
enableLights()
,
setLightColor()
,
et
setVibrationPattern()
le NotificationChannel
. N'oubliez pas qu'une fois la chaîne créée,
ne peut pas modifier ces paramètres, et c'est l'utilisateur qui contrôle en dernier lieu s'ils
sont actifs.
Vous pouvez également créer plusieurs canaux de notification en une seule opération en
Appel en cours
createNotificationChannels()
Définir le niveau d'importance
L'importance du canal a une incidence sur le niveau d'interruption de toutes les notifications publiées dans
la chaîne. Spécifiez-le dans le constructeur NotificationChannel
, à l'aide de l'une des
cinq niveaux d'importance, allant de
IMPORTANCE_NONE(0)
à
IMPORTANCE_HIGH(4)
Pour prendre en charge les appareils équipés d'Android 7.1 (niveau d'API 25) ou version antérieure, vous devez également
appel
setPriority()
pour chaque notification, à l'aide d'une constante de priorité issue du
NotificationCompat
.
Importance (NotificationManager.IMPORTANCE_*
) et priorité
Les constantes (NotificationCompat.PRIORITY_*
) correspondent à l'importance visible par l'utilisateur
comme indiqué dans le tableau suivant.
Niveau d'importance visible par l'utilisateur | Importance (Android 8.0 ou version ultérieure) | Priorité (Android 7.1 ou version antérieure) |
---|---|---|
Urgent Émet un signal sonore et apparaît sous forme de notification prioritaire. |
IMPORTANCE_HIGH |
PRIORITY_HIGH ou PRIORITY_MAX |
Élevé Émet un son. |
IMPORTANCE_DEFAULT |
PRIORITY_DEFAULT |
Moyen N'émet aucun son. |
IMPORTANCE_LOW |
PRIORITY_LOW |
Faible N'émet aucun son et n'apparaît pas dans la barre d'état. |
IMPORTANCE_MIN |
PRIORITY_MIN |
Aucun N'émet aucun son et n'apparaît pas dans la barre d'état ni dans le volet. |
IMPORTANCE_NONE |
N/A |
Toutes les notifications, quelle que soit leur importance, s'affichent dans le système sans interruption les emplacements de l'interface utilisateur, par exemple dans le panneau des notifications et un badge sur l'icône du lanceur d'applications, même si vous pouvez modifier l'apparence du badge de notification.
Une fois la chaîne envoyée
NotificationManager
, vous
ne peut pas modifier le niveau d'importance. Toutefois, l'utilisateur peut modifier ses paramètres
pour les chaînes de votre application.
Pour plus d'informations sur le choix d'un niveau de priorité approprié, consultez la rubrique niveaux" dans Guide de conception des notifications
Lire les paramètres du canal de notification
Les utilisateurs peuvent modifier les paramètres des canaux de notification, y compris les comportements comme les vibrations et le son d'alerte. Si vous souhaitez connaître les paramètres d'un utilisateur s'applique à vos canaux de notification, procédez comme suit:
Récupérez l'objet
NotificationChannel
en appelantgetNotificationChannel()
ougetNotificationChannels()
Interrogez des paramètres de canaux spécifiques, tels que
getVibrationPattern()
,getSound()
getImportance()
Si vous détectez un paramètre de chaîne qui, selon vous, empêche le comportement souhaité pour votre application, vous pouvez suggérer à l'utilisateur de la modifier et proposer une action ouvrez les paramètres de la chaîne, comme indiqué dans la section suivante.
Ouvrir les paramètres du canal de notification
Une fois que vous avez créé un canal de notification, vous ne pouvez plus modifier la notification les comportements visuels et auditifs de la chaîne de manière programmatique. Seul l'utilisateur peut modifier le comportement de la chaîne dans les paramètres système. Pour fournir à vos utilisateurs un accès facile à ces paramètres de notification, ajoutez un élément dans le interface utilisateur des paramètres qui ouvre ces paramètres système.
Vous pouvez ouvrir les paramètres système des canaux de notification avec un
Intent
qui utilise le
ACTION_CHANNEL_NOTIFICATION_SETTINGS
action.
L'exemple de code suivant montre comment rediriger un utilisateur vers paramètres d'un canal de notification:
Kotlin
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()) } startActivity(intent)
Java
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()); startActivity(intent);
Notez que l'intent nécessite deux extras spécifiant le nom du package de votre application. (également appelé "ID application") et la chaîne à modifier.
Supprimer un canal de notification
Vous pouvez supprimer les canaux de notification en appelant
deleteNotificationChannel()
L'exemple de code suivant montre comment effectuer ce processus:
Kotlin
// The id of the channel. val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val id: String = "my_channel_01" notificationManager.deleteNotificationChannel(id)
Java
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = "my_channel_01"; notificationManager.deleteNotificationChannel(id);
Créer un groupe de canaux de notification
Si vous souhaitez mieux organiser l'apparence de vos chaînes dans l'interface utilisateur des paramètres, vous pouvez créer des groupes de canaux. C'est une bonne idée lorsque votre application prend en charge plusieurs comptes utilisateur, par exemple profils professionnels, car elle vous permet pour chaque compte. De cette façon, les utilisateurs peuvent facilement identifier et contrôler plusieurs canaux de notification ayant des noms identiques.
Par exemple, une application de réseau social peut inclure une prise en charge des applications personnelles et professionnelles Google Cloud. Dans ce scénario, chaque compte peut nécessiter plusieurs notifications canaux avec des fonctions et des noms identiques, par exemple:
Un compte personnel avec deux chaînes:
Nouveaux commentaires
Recommandations de posts
Un compte professionnel avec deux canaux:
Nouveaux commentaires
Recommandations de posts
L'organisation des canaux de notification en groupes pour chaque compte permet aux utilisateurs les distinguer.
Chaque groupe de canaux de notification nécessite un ID, qui doit être unique dans votre package, ainsi qu'un nom visible par l'utilisateur. L'extrait de code suivant montre comment pour créer un groupe de canaux de notification.
Kotlin
// The id of the group. val groupId = "my_group_01" // The user-visible name of the group. val groupName = getString(R.string.group_name) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))
Java
// The id of the group. String groupId = "my_group_01"; // The user-visible name of the group. CharSequence groupName = getString(R.string.group_name); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannelGroup(new NotificationChannelGroup(groupId, groupName));
Après avoir créé un groupe, vous pouvez appeler
setGroup()
pour associer un nouvel objet NotificationChannel
au groupe.
Une fois que vous avez indiqué la chaîne dans le gestionnaire de notifications, vous ne pouvez plus modifier association entre le canal et le groupe de notification.