Actions et catégories de notifications
Ajoutez des actions interactives aux notifications.
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 buttonsDé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])
_ = categoryActions 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 desUNTextInputNotificationAction, puis regroupez-les dans uneUNNotificationCategory. - Enregistrez les catégories au lancement ; définissez
categoryIdentifierdans le contenu, oucategorydans la notification push, pour afficher les boutons. - Gérez
response.actionIdentifier, y compris les identifiants par défaut et de fermeture, et lisezuserTextpour les réponses. - Omettez
.foregroundpour les actions en arrière-plan, comme la mise en veille d’un rappel.
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
- S’inscrire aux notifications push
- Gérer les charges utiles des notifications
- Tâches et actualisation en arrière-plan
- Actions et catégories de notifications