Notification Action — boutons interactifs et champs de saisie qui apparaissent directement dans une notification push et permettent à l'utilisateur d'effectuer une action sans ouvrir l'application. C'est un élément clé de l'expérience utilisateur, raccourcissant le chemin vers l'écran cible. Selon Android Developers, 2025, Notification Action augmente l'engagement des utilisateurs jusqu'à 40% en réduisant les frictions lors de l'interaction.
Points clés
Notification Action est un élément d'interface interactif ajouté à une notification push pour effectuer une action spécifique. L'utilisateur peut répondre à un message, confirmer une tâche ou ouvrir un écran spécifique sans entrer dans l'application. Les actions apparaissent sous forme de boutons sous le texte de la notification ou dans une vue agrandie lors du balayage.
L'objectif principal de Notification Action est de réduire le nombre d'étapes pour que l'utilisateur atteigne son objectif. Au lieu d'ouvrir l'application et de naviguer vers l'écran souhaité, l'utilisateur appuie sur un seul bouton. Les recherches montrent que les applications avec des notifications interactives présentent un engagement 25 à 40% plus élevé par rapport aux notifications simples.
Sur Android, les Notification Actions s'affichent sous forme de boutons icône en vue compacte et de boutons texte en mode extensible. Sur iOS, les actions apparaissent lors d'une pression longue sur la notification ou d'un balayage vers la gauche. Chaque plateforme a ses propres recommandations concernant le nombre d'actions — Android recommande au maximum 3, iOS au maximum 4.
| Plateforme | Max. actions | Méthode d'affichage | Types d'actions |
|---|---|---|---|
| Android | 3 | Icônes + Texte | Boutons, Saisie de texte |
| iOS | 4 | Pression longue / Balayage | Boutons, Saisie de texte |
Sur Android, les Notification Actions sont créées via NotificationCompat.Builder en utilisant la méthode addAction(). Chaque action contient une icône, du texte et un PendingIntent qui se déclenche lors du tapotement. À partir d'Android 7.0 (API 24), la saisie directe de texte via RemoteInput est prise en charge.
Pour créer un bouton dans une notification, il est nécessaire de définir un PendingIntent qui sera lancé lors du tapotement. PendingIntent peut ouvrir une Activity, lancer un Service ou un BroadcastReceiver. L'icône de l'action doit être monochrome et conforme à Material Design.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Demande de confirmation")
.setContentText("Confirmez l'exécution de la tâche")
.addAction(R.drawable.ic_accept, "Confirmer", acceptPendingIntent)
.build()
Pour les scénarios nécessitant une saisie de texte (par exemple, répondre à un message), Android fournit RemoteInput. L'utilisateur saisit le texte directement dans la notification et l'application le reçoit sans ouvrir une Activity. RemoteInput est pris en charge sur Android 7.0+ et nécessite un traitement explicite dans un BroadcastReceiver ou un Service.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Saisissez la réponse")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Répondre", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
Lorsqu'une action est tapotée, le système lance le PendingIntent spécifié. Pour récupérer le texte saisi via RemoteInput, appelez RemoteInput.getResultsFromIntent(intent). Il est recommandé de traiter les actions dans IntentService ou WorkManager pour ne pas bloquer le thread de l'interface utilisateur.
Sur iOS, les Notification Actions sont implémentées via le framework UserNotifications. Le développeur crée des catégories d'actions (UNNotificationCategory) et les enregistre au lancement de l'application. Chaque action est définie par un objet UNNotificationAction avec un identifiant unique.
Pour ajouter des actions aux notifications push sur iOS, il est nécessaire de créer une catégorie qui regroupe les actions associées. La catégorie est spécifiée dans la charge utile de la notification via le champ category. Lors de la réception d'une notification, le système affiche les actions disponibles de la catégorie spécifiée.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Approuver",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Refuser",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Lorsque l'utilisateur tape sur une action, le système appelle la méthode userNotificationCenter:didReceiveNotificationResponse dans le délégué de UNUserNotificationCenter. response.actionIdentifier contient l'identifiant de l'action effectuée. Pour la saisie de texte, UNTextInputNotificationAction est utilisé, qui fournit le texte saisi par l'utilisateur.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action est classé par type d'interaction et scénario d'utilisation. Le choix correct du type d'action affecte directement l'expérience utilisateur et la conversion vers l'action cible.
Le type le plus courant — un bouton qui ouvre l'application sur un écran spécifique. Sur Android, on utilise PendingIntent.getActivity(), sur iOS — l'option .foreground de UNNotificationAction. Utilisé pour les actions nécessitant une interface complète, comme la consultation des détails d'une commande.
Actions qui s'exécutent sans ouvrir l'application. Sur Android, on utilise PendingIntent.getBroadcast() ou PendingIntent.getService(). Sur iOS — l'option .authenticationRequired ou sans .foreground. Exemples : marquer une tâche comme terminée, aimer une publication, ajouter aux favoris.
Permet à l'utilisateur de saisir du texte directement dans la notification. Sur Android, implémenté via RemoteInput, sur iOS — via UNTextInputNotificationAction. Utilisé pour répondre aux messages, commentaires, saisir des codes de confirmation à usage unique.
Actions qui modifient les données de manière irréversible — suppression, rejet, blocage. Sur Android, elles sont mises en évidence visuellement (couleur rouge sur certains systèmes), sur iOS elles nécessitent l'option .destructive. Il est recommandé de demander une confirmation pour les actions destructives, par exemple via une boîte de dialogue supplémentaire ou un deuxième tapotement.
Une classe d'actions distincte — saisie de texte directement depuis la notification. Sur Android, cela est implémenté via RemoteInput en combinaison avec PendingIntent. Sur iOS, UNTextInputNotificationAction est utilisé, héritant de UNNotificationAction. Ces actions sont utilisées pour les réponses rapides dans les messageries, la saisie de codes promotionnels, le remplissage de formulaires de commentaires ou l'évaluation de la qualité de service. Le texte saisi est transmis à l'application avec l'identifiant de l'action. Pour un traitement correct de la saisie de texte sur les deux plateformes, il est nécessaire d'implémenter l'analyse des données saisies et la validation avant d'exécuter l'action cible.
Le traitement correct de Notification Action est essentiel pour l'analyse et l'expérience utilisateur. Chaque tapotement doit être journalisé et l'action doit être exécutée de manière fiable même si l'application était fermée.
Suivez chaque tapotement sur Notification Action via votre système d'analyse. Firebase Analytics, Mixpanel ou Yandex.Metrica permettent d'enregistrer l'identifiant de l'action, l'heure du tapotement et le contexte de la notification. Ces données aident à optimiser votre stratégie de notifications et à augmenter l'engagement. Les tests A/B avec différents ensembles d'actions aident à identifier les scénarios d'interaction les plus efficaces avec l'utilisateur.
Si l'application est fermée, le système livre toujours l'Intent ou UNNotificationResponse lors du tapotement d'une action. Sur Android, utilisez un BroadcastReceiver pour un traitement garanti. Sur iOS, le système lance l'application en arrière-plan et transmet la réponse au délégué. Pour les actions critiques (confirmation de paiement, autorisation), ajoutez un mécanisme de nouvelle tentative et informez l'utilisateur de la réussite.
À partir d'Android 7.0, le développeur peut influencer l'apparence de Notification Action via les icônes et les couleurs. Les icônes doivent être monochromes (canal alpha), de taille 24x24 dp. Sur iOS, la personnalisation des boutons est limitée — les couleurs et polices système sont utilisées. Material Design recommande de regrouper les actions par priorité : l'action la plus importante en premier, les destructives en dernier.
Foire aux questions
Android recommande au maximum 3 actions, iOS — jusqu'à 4. Le dépassement de la limite entraîne l'absence d'affichage de certaines actions ou leur masquage dans un sous-menu.
L'icône est passée dans NotificationCompat.Action.Builder comme ressource drawable. L'icône doit être monochrome (canal alpha), de taille 24x24 dp et conforme aux directives de Material Design.
Oui, si la notification est affichée sur l'écran verrouillé et que le drapeau visibility est défini sur VISIBILITY_PUBLIC. Sur iOS, l'option .authenticationRequired est requise pour les actions nécessitant une autorisation.
Sur Android, le système recrée le processus et délivre l'Intent. Sur iOS, le système lance l'application en arrière-plan. La livraison garantie peut être obtenue en utilisant BroadcastReceiver sur Android et UNNotificationServiceExtension sur iOS.
Sur Android, les actions sont visibles directement sous la notification sous forme d'icônes. Sur iOS, les actions sont cachées derrière une pression longue ou un balayage. La conception UX des notifications doit tenir compte de ces différences de plateforme.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi