Notification Category : ce que c'est, quelles catégories existent et comment elles fonctionnent sur iOS

Auteur : IT Sectr Publié le : 2026-03-20 Temps de lecture : 8 min

Notification Category (catégorie de notification) est un mécanisme iOS permettant de regrouper les notifications push par type et d'y attacher des actions personnalisées. La catégorie détermine quels boutons s'affichent lors de l'utilisation de 3D Touch ou d'un appui long sur une notification, ainsi que la façon dont le système traite les notifications entrantes de ce type. Selon la Documentation Développeur Apple, UNNotificationCategory est enregistré dans UNUserNotificationCenter et lié à une notification via le champ category dans le payload APNS.

Points clés

  • Notification Category — mécanisme iOS pour classer les notifications push et y ajouter des actions
  • UNNotificationCategory — classe qui enregistre une catégorie avec un ensemble de UNNotificationAction
  • Actions — boutons sous la notification : UNTextInputAction pour la saisie de texte, UNNotificationAction pour le tap
  • Lien — la catégorie est spécifiée dans le payload APNS via la clé category dans le dictionnaire aps
  • Différence avec Android — iOS Category gère les actions, tandis qu'Android Channel gère l'importance et le son

Qu'est-ce que Notification Category sur iOS ?

Notification Category est une fonctionnalité iOS (depuis la version 8.0) qui permet aux développeurs de classer les notifications push et d'y ajouter des actions interactives. Lorsqu'un utilisateur reçoit une notification et appuie fermement (3D Touch) ou effectue un appui long, des boutons définis par la catégorie apparaissent. Cela rend les notifications interactives et permet aux utilisateurs d'agir sans ouvrir l'application.

Une catégorie est enregistrée via un objet UNNotificationCategory, qui contient un identifiant, un tableau d'actions et des paramètres d'affichage optionnels. Le système utilise l'identifiant de catégorie du payload APNS pour trouver la catégorie enregistrée et afficher les boutons correspondants.

Contrairement à Android Notification Channel, iOS Category ne gère pas l'importance, le son ou la vibration. Son seul but est de fournir des capacités interactives pour les notifications : boutons de réponse, de confirmation, d'annulation ou de saisie de texte.

Les catégories sont-elles obligatoires ?

Les catégories ne sont pas obligatoires pour afficher les notifications push sur iOS. La notification apparaîtra de toute façon — avec des boutons si une catégorie est enregistrée, ou sans. Les catégories ne sont nécessaires que pour ajouter de l'interactivité aux notifications.

Comment fonctionnent les catégories de notifications ?

Le mécanisme des catégories comprend quatre étapes : enregistrer la catégorie sur le client, envoyer un payload APNS avec la catégorie, le système reconnaître la catégorie et traiter l'action de l'utilisateur.

  • Enregistrement — l'application crée une UNNotificationCategory avec un tableau d'actions et l'enregistre dans UNUserNotificationCenter
  • Envoi — le serveur inclut la clé category dans le payload APNS avec une valeur correspondant à l'identifiant de la catégorie
  • Affichage — iOS affiche la notification et lors d'un appui forcé montre les boutons associés à la catégorie
  • Traitement — l'utilisateur tape sur un bouton, ce qui déclenche UNUserNotificationCenterDelegate.didReceive response

Les actions dans une catégorie peuvent être de deux types : foreground (ouvrent l'application) et background (s'exécutent en arrière-plan). Pour les actions en arrière-plan, l'application dispose d'un temps limité (environ 30 secondes) pour traiter dans UNNotificationActionHandler.

Options lors de l'enregistrement d'une catégorie

UNNotificationCategory prend en charge plusieurs options via le paramètre options : customDismissAction — recevoir un événement lors du balayage de la notification, allowInCarPlay — afficher les actions dans CarPlay, hiddenPreviewsBodyPlaceholder — texte d'espace réservé personnalisé pour les aperçus masqués.

UNNotificationAction : types d'actions

iOS propose deux types d'actions pour les catégories de notifications. Chaque type a son propre objectif et sa propre façon d'interagir avec l'utilisateur.

TypeClasseDescriptionExemple
Action simpleUNNotificationActionUn bouton avec un titre et des options (destructive, foreground, authenticationRequired)« Supprimer », « Voir »
Saisie de texteUNTextInputActionUn bouton qui ouvre un champ de saisie de texte avec un espace réservé« Répondre », « Commenter »

UNTextInputAction est une fonctionnalité unique d'iOS. Lorsque l'utilisateur tape sur le bouton « Répondre », le système affiche un champ de texte où l'utilisateur saisit sa réponse. Le texte saisi est transmis au délégué avec l'identifiant de l'action. Cela permet d'implémenter des réponses rapides sans ouvrir l'application.

Options d'action : options.authenticationRequired — nécessite le déverrouillage de l'appareil, options.destructive — met le bouton en rouge (pour les actions dangereuses), options.foreground — ouvre l'application après le tap.

Configurer une catégorie dans le code iOS

Les catégories sont enregistrées au lancement de l'application, généralement dans la méthode didFinishLaunchingWithOptions. L'enregistrement se fait via UNUserNotificationCenter, après avoir demandé l'autorisation de notification. Les catégories peuvent être mises à jour à chaque lancement — les anciennes versions sont remplacées par de nouvelles.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Répondre",
            options: [.foreground],
            textInputButtonTitle: "Envoyer",
            textInputPlaceholder: "Saisissez un message..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "Supprimer",
            options: [.destructive]
        )

        let messageCategory = UNNotificationCategory(
            identifier: "message",
            actions: [replyAction, deleteAction],
            intentIdentifiers: [],
            options: [.customDismissAction]
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([messageCategory])
    }

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        UNUserNotificationCenter.current().delegate = self
        registerNotificationCategories()
        return true
    }
}

Après avoir enregistré la catégorie, toute notification avec category = « message » dans le payload APNS affichera les boutons « Répondre » et « Supprimer ». Le traitement des taps se fait dans userNotificationCenter:didReceive response, où actionIdentifier détermine quel bouton a été pressé.

Traitement du tap dans le délégué

Lorsque l'utilisateur tape sur un bouton de catégorie, iOS appelle le UNUserNotificationCenterDelegate avec un objet UNNotificationResponse. response.actionIdentifier contient l'identifiant du bouton tapé, et response.notification.request.content.userInfo contient les données personnalisées du payload.

Différences avec les canaux Android

Les développeurs familiarisés avec les canaux de notification Android les confondent souvent avec les catégories de notification iOS. Malgré le nom similaire, ces mécanismes résolvent des tâches différentes et fonctionnent différemment.

  • Objectif — les canaux Android gèrent l'importance et la visibilité des notifications ; les catégories iOS gèrent les actions interactives
  • Obligation — le canal Android est obligatoire pour afficher une notification ; la catégorie iOS est optionnelle
  • Contrôle utilisateur — les utilisateurs Android configurent les canaux dans les paramètres système ; les catégories iOS ne sont pas visibles directement par l'utilisateur
  • Regroupement — les canaux Android peuvent être regroupés en ChannelGroups ; les catégories iOS ne sont pas regroupées

Les deux plateformes peuvent combiner les deux mécanismes : sur Android, une notification peut appartenir à un canal avec des actions de NotificationCompat, tandis que sur iOS, une catégorie complète les canaux, qui sur iOS sont appelés thread-id et servent à regrouper les notifications dans le centre de notifications.

Payload APNS avec catégorie

Pour qu'une notification s'affiche avec les boutons de la catégorie, le serveur doit inclure la clé category dans le payload APNS. Sans cette clé, le système ne saura pas quelle catégorie appliquer à la notification.

json
{
    "aps": {
        "alert": {
            "title": "Nouveau message",
            "body": "Anna : Bonjour ! Comment vas-tu ?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

La clé category doit correspondre exactement à l'identifiant enregistré via setNotificationCategories sur le client. La casse est importante — « message » et « Message » sont considérées comme des catégories différentes. Si la catégorie n'est pas trouvée, la notification apparaît sans boutons, sans erreur dans les logs.

Traitement des catégories inconnues

Si le serveur envoie une notification avec une catégorie non enregistrée sur le client, iOS ignore la catégorie et affiche la notification sans boutons. L'erreur n'est pas journalisée et l'application n'a pas connaissance de l'inadéquation. Il est recommandé de synchroniser la liste des catégories entre le serveur et le client.

Modèles de conception de catégories

Lors de la conception de catégories de notifications sur iOS, suivez le principe une catégorie — un scénario. Chaque catégorie doit correspondre à un type spécifique d'interaction : répondre à un message, confirmer une action, refuser une demande. Ne mélangez pas différents scénarios dans une même catégorie.

Utilisez UNTextInputAction pour les scénarios où l'utilisateur doit saisir du texte sans ouvrir l'application : réponses de messagerie, commentaires, notes rapides. Les actions textuelles augmentent l'engagement — l'utilisateur effectue une action significative en 2 taps au lieu de 5+ dans l'application.

Pour les actions dangereuses (supprimer, bloquer), utilisez l'option destructive. iOS mettra ces boutons en rouge, avertissant l'utilisateur de l'irréversibilité de l'action. Pour les actions nécessitant le déverrouillage de l'appareil (visualisation de données personnelles), spécifiez authenticationRequired.

Testez les catégories sur différents appareils : sur iPhone avec 3D Touch, sur iPhone sans 3D Touch (appui long), sur iPad et sur Mac. Le comportement des catégories peut légèrement différer selon les plateformes Apple. Une attention particulière pour CarPlay : les boutons de catégorie apparaissent sur l'écran de la voiture et doivent être conçus avec un texte minimal pour la sécurité du conducteur.

Questions fréquentes

Combien de catégories peut-on enregistrer sur iOS ?

Il n'y a aucune limite — iOS n'impose pas de limite sur le nombre de UNNotificationCategory. Cependant, dans la pratique, il est recommandé de ne pas utiliser plus de 10 à 15 catégories pour ne pas compliquer le traitement dans le délégué. Chaque catégorie peut contenir jusqu'à 4 actions (boutons). Plus de 4 actions sont ignorées par le système.

Comment traiter un tap sur un bouton de catégorie ?

Implémentez le protocole UNUserNotificationCenterDelegate et la méthode didReceive. Vérifiez response.actionIdentifier : UNNotificationDismissActionIdentifier — balayer pour rejeter, UNNotificationDefaultActionIdentifier — tap sur le corps, ou votre identifiant de bouton personnalisé. Pour les boutons de saisie de texte, le texte est disponible via response.userText.

En quoi category diffère-t-elle de thread-id ?

Category — définit les actions interactives (boutons) pour la notification. Thread-id — regroupe les notifications dans le Centre de notifications par sujet. Les deux clés sont spécifiées dans le payload APNS. Category et thread-id ne sont pas liés : une notification peut avoir une catégorie mais pas de thread-id, et vice versa.

Les catégories fonctionnent-elles sur macOS ?

Oui, UNNotificationCategory est pris en charge sur macOS 10.14+ (Mojave) dans les applications utilisant le framework UserNotifications. Le comportement des catégories sur macOS est similaire à iOS : en cliquant sur une notification, les boutons s'affichent et le traitement se fait via UNUserNotificationCenterDelegate.

Dois-je mettre à jour les catégories à chaque lancement ?

Il est recommandé d'enregistrer les catégories à chaque lancement de l'application via setNotificationCategories. Le système remplace l'ancien ensemble de catégories par le nouveau à chaque appel. Si vous ne mettez pas à jour, les catégories persistent entre les lancements, mais lorsque le code change, les anciennes catégories peuvent provoquer un comportement inattendu.

Résumé

  • Notification Category — un mécanisme iOS pour ajouter des actions interactives aux notifications push
  • UNNotificationCategory — une classe qui combine un identifiant, un tableau de UNNotificationAction et des options
  • UNTextInputAction — une action avec un champ de saisie de texte pour des réponses rapides sans ouvrir l'application
  • Payload APNS — la clé category dans le dictionnaire aps relie la notification à une catégorie enregistrée
  • Jusqu'à 4 actions — maximum de boutons par catégorie, le reste est ignoré par le système
  • Options d'action — foreground (ouvrir l'application), destructive (bouton rouge), authenticationRequired
  • Différence avec Android — iOS Category gère les actions, Android Channel gère l'importance et le son

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.

Discuter du projet

Lisez aussi