Votre application peut avoir besoin d'attirer l'attention de l'utilisateur de manière urgente dans certaines situations, comme une alarme en cours ou un appel entrant. Dans les applications ciblant les appareils exécutant Android 9 (niveau d'API 28) ou version antérieure, vous pouvez gérer cela en lançant une lorsque l'application est exécutée en arrière-plan. Ce document explique comment atteindre ce comportement sur les appareils équipés d'Android 10 (niveau d'API 29). Android 13 (niveau d'API 33).
Ajouter l'autorisation POST_NOTIFICATIONS
À partir d'Android 13, ajoutez la ligne suivante à votre fichier AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Vous pouvez ensuite créer un canal de notification.
Créer un canal de notification
Créez un canal de notification pour afficher correctement vos notifications et laisser le les utilisateurs gèrent les notifications dans les paramètres de l'application. Pour en savoir plus sur canaux de notification, consultez la page Créer et gérer des canaux.
Créez vos canaux de notification dans les canaux de notification de votre classe Application
.
Méthode onCreate
:
Kotlin
class DACapp : Application() { override fun onCreate() { super.onCreate() val channel = NotificationChannel( CHANNEL_ID, "High priority notifications", NotificationManager.IMPORTANCE_HIGH ) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } }
Lorsque l'utilisateur exécute votre application pour la première fois, il voit quelque chose comme la figure 1. sur l'écran système Informations sur l'application de votre application:
Gérer les autorisations de notification
À partir d'Android 13, demandez les autorisations de notification avant vous affichez des notifications aux utilisateurs.
L'implémentation minimale se présente comme suit:
Kotlin
val permissionLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.RequestPermission(), onResult = { hasNotificationPermission = it } ) ... Button( onClick = { if (!hasNotificationPermission) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }, ) { Text(text = "Request permission") }
Si votre appareil est équipé d'Android 13, appuyez sur le bouton Request
permission
pour déclencher la boîte de dialogue illustrée à la figure 2:
Si l'utilisateur accepte la demande d'autorisation, la section Informations sur l'application de l'application se présente comme suit :
Créer une notification à priorité élevée
Lorsque vous créez la notification, incluez un titre et un message descriptifs.
L'exemple suivant contient une notification:
Kotlin
private fun showNotification() { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_auto_awesome_24) .setContentTitle("HIGH PRIORITY") .setContentText("Check this dog puppy video NOW!") .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION) notificationManager.notify(666, notificationBuilder.build()) }
Afficher la notification à l'attention de l'utilisateur
L'appel de la fonction showNotification()
déclenche la notification suivante:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
La notification de cet exemple ressemble à la figure 4:
Notification en cours
Lorsque vous présentez votre notification à l'utilisateur, celui-ci peut confirmer ou l'ignorer l'alerte ou le rappel de votre application. Par exemple, l'utilisateur peut accepter ou refuser appel téléphonique entrant.
Si la notification est en cours, comme un appel téléphonique entrant, associer la notification à un premier plan service. L'extrait de code suivant montre comment afficher une notification associée à un service de premier plan:
Kotlin
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
Java
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification);