Swift Academy · Leçon

Actions et catégories de notifications

Ajoutez des actions interactives aux notifications.

Leçon 4 sur 413 étapes

Actions et catégories de notifications est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Notifications interactives

Les notifications peuvent faire bien plus qu’afficher du texte : elles peuvent proposer des boutons. L’utilisateur peut répondre à un message, accepter une invitation ou mettre un rappel en veille sans ouvrir l’app. Cette fonctionnalité repose sur des actions regroupées en catégories.

import UserNotifications
// Category = a set of actions
// Each delivered notification names its category
// so the system shows the right buttons

Définir une action

Une UNNotificationAction possède un identifiant, que vous utiliserez ensuite pour la reconnaître, un titre localisé affiché sur le bouton et des options comme .destructive ou .foreground, qui lance l’app.

import UserNotifications
let accept = UNNotificationAction(
    identifier: "ACCEPT",
    title: String(localized: "Accept"),
    options: [.foreground])
let decline = UNNotificationAction(
    identifier: "DECLINE",
    title: String(localized: "Decline"),
    options: [.destructive])

Regrouper dans une catégorie

Une UNNotificationCategory regroupe des actions sous un identifiant de catégorie. L’ordre des actions dans le tableau correspond à l’ordre des boutons. Enregistrez les catégories une seule fois au lancement auprès du centre de notifications.

import UserNotifications
let inviteCategory = UNNotificationCategory(
    identifier: "INVITE",
    actions: [accept, decline],
    intentIdentifiers: [],
    options: [])
UNUserNotificationCenter.current()
    .setNotificationCategories([inviteCategory])

Associer une catégorie à une notification

Pour que les boutons apparaissent, le contenu de la notification doit définir categoryIdentifier avec une catégorie enregistrée. Pour les notifications distantes, le serveur envoie "category": "INVITE" dans le dictionnaire aps.

import UserNotifications
let content = UNMutableNotificationContent()
content.title = String(localized: "New invite")
content.body = String(localized: "Ada invited you")
content.categoryIdentifier = "INVITE"

Gérer l’action choisie

Lorsque l’utilisateur touche un bouton, didReceive response du délégué est exécuté avec response.actionIdentifier défini sur l’identifiant de votre action. Utilisez une instruction switch pour effectuer le travail approprié.

import UserNotifications
func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    didReceive response: UNNotificationResponse
) async {
    switch response.actionIdentifier {
    case "ACCEPT":  print("accepted")
    case "DECLINE": print("declined")
    default:        break
    }
}

Identifiants par défaut et de fermeture

Deux identifiants système existent toujours : UNNotificationDefaultActionIdentifier signifie que l’utilisateur a touché le corps de la notification pour ouvrir l’app, et UNNotificationDismissActionIdentifier signifie qu’il l’a fermée. Gérez-les en plus de vos actions personnalisées.

import UserNotifications
func route(_ id: String) {
    switch id {
    case UNNotificationDefaultActionIdentifier:
        print("opened the app")
    case UNNotificationDismissActionIdentifier:
        print("dismissed")
    default:
        print("custom action", id)
    }
}

Actions de saisie de texte

Une UNTextInputNotificationAction affiche un champ de texte intégré, idéal pour les réponses rapides. Elle ajoute un titre de bouton et un texte indicatif pour le champ de saisie.

import UserNotifications
let reply = UNTextInputNotificationAction(
    identifier: "REPLY",
    title: String(localized: "Reply"),
    options: [],
    textInputButtonTitle: String(localized: "Send"),
    textInputPlaceholder: String(localized: "Message"))

Lire le texte saisi

Pour une action de saisie de texte, la réponse est une UNTextInputNotificationResponse. Effectuez une conversion vers ce type pour lire userText, la chaîne saisie par l’utilisateur.

import UserNotifications
func handle(_ response: UNNotificationResponse) {
    if let textResponse = response
        as? UNTextInputNotificationResponse {
        let message = textResponse.userText
        print("reply:", message)
    }
}

Options de catégorie

Les options de catégorie affinent le comportement : .customDismissAction transmet l’événement de fermeture à votre délégué, .hiddenPreviewsShowTitle révèle le titre même lorsque les aperçus sont masqués sur l’écran verrouillé, et .allowInCarPlay autorise l’affichage dans CarPlay.

import UserNotifications
let category = UNNotificationCategory(
    identifier: "MESSAGE",
    actions: [reply],
    intentIdentifiers: [],
    options: [.customDismissAction,
              .hiddenPreviewsShowTitle])
_ = category

Actions en arrière-plan ou au premier plan

Sans l’option .foreground, une action exécute votre gestionnaire en arrière-plan sans afficher l’app au premier plan — ce qui convient parfaitement pour mettre un rappel en veille ou ajouter une appréciation. Avec .foreground, l’app se lance afin que vous puissiez afficher une interface. Choisissez selon que l’utilisateur doit voir quelque chose ou non.

import UserNotifications
let snooze = UNNotificationAction(
    identifier: "SNOOZE",
    title: String(localized: "Snooze"),
    options: []) // background, no app launch
let open = UNNotificationAction(
    identifier: "OPEN",
    title: String(localized: "Open"),
    options: [.foreground]) // launches app
_ = (snooze, open)

Un flux complet de réponse

Combinez une action de saisie de texte, une catégorie et un gestionnaire qui distingue la réponse saisie d’une simple ouverture. Ce modèle permet de gérer les réponses intégrées aux conversations.

import UserNotifications
func handle(_ response: UNNotificationResponse) async {
    switch response.actionIdentifier {
    case "REPLY":
        let text = (response as?
            UNTextInputNotificationResponse)?.userText ?? ""
        print("send reply:", text)
    case UNNotificationDefaultActionIdentifier:
        print("open conversation")
    default:
        break
    }
}

Vérification rapide

Rappelez-vous comment le système sait quels boutons afficher.

Récapitulatif

Vous avez appris à utiliser les notifications interactives :

  • Construisez des UNNotificationAction, notamment des UNTextInputNotificationAction, puis regroupez-les dans une UNNotificationCategory.
  • Enregistrez les catégories au lancement ; définissez categoryIdentifier dans le contenu, ou category dans la notification push, pour afficher les boutons.
  • Gérez response.actionIdentifier, y compris les identifiants par défaut et de fermeture, et lisez userText pour les réponses.
  • Omettez .foreground pour les actions en arrière-plan, comme la mise en veille d’un rappel.
Gratuit pour commencer

Apprends Swift avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
122
Leçons
409

Questions Fréquemment Posées

La leçon « Actions et catégories de notifications » est-elle gratuite ?

Oui — le texte complet de « Actions et catégories de notifications » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Actions et catégories de notifications » ?

Ajoutez des actions interactives aux notifications. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Actions et catégories de notifications » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. S’inscrire aux notifications push
  2. Gérer les charges utiles des notifications
  3. Tâches et actualisation en arrière-plan
  4. Actions et catégories de notifications
← Retour à Swift Academy