Gérer les charges utiles des notifications
Réagissez aux notifications au premier plan et en arrière-plan.
Gérer les charges utiles des notifications est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.
Structure de la charge utile
Une notification distante est un dictionnaire JSON que votre serveur envoie à APNs. La clé réservée aps contient le contenu visible par l’utilisateur — alerte, son et badge — tandis que les autres clés contiennent vos données personnalisées, comme un identifiant d’élément à ouvrir.
// Example payload JSON:
// {
// "aps": { "alert": { "title": "Hi", "body": "..." },
// "sound": "default", "badge": 1 },
// "itemId": "42"
// }Dictionnaire aps
Dans aps, alert peut être une chaîne ou un objet contenant un titre, un corps et un sous-titre. sound, badge et des indicateurs comme content-available et mutable-content se trouvent également ici. Tout ce qui se trouve en dehors de aps est à votre définition.
// aps keys:
// alert: { title, subtitle, body }
// sound: "default" or critical sound object
// badge: Int
// content-available: 1 (silent / background)
// mutable-content: 1 (allow modification)Réception au premier plan
Par défaut, une notification qui arrive lorsque votre app est au premier plan est masquée. Pour l’afficher malgré tout, implémentez willPresent dans le délégué et renvoyez les options d’affichage souhaitées, comme une bannière et un son.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification
) async -> UNNotificationPresentationOptions {
return [.banner, .sound, .badge]
}Réagir à une pression
Lorsque l’utilisateur touche une notification, que l’app soit en arrière-plan ou arrêtée, didReceive response du délégué est exécuté. C’est ici que vous lisez la charge utile et accédez à l’écran approprié.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse
) async {
let info = response.notification.request
.content.userInfo
if let id = info["itemId"] as? String {
print("open item", id)
}
}Lecture de userInfo
La charge utile complète, y compris vos clés personnalisées, est exposée dans content.userInfo sous la forme d’un dictionnaire [AnyHashable: Any]. Convertissez chaque valeur avec précaution ; ne forcez jamais le déballage, car une charge utile mal formée ne doit pas faire planter l’app.
import UserNotifications
func route(_ userInfo: [AnyHashable: Any]) {
guard let screen = userInfo["screen"] as? String
else { return }
switch screen {
case "profile": print("go to profile")
case "cart": print("go to cart")
default: break
}
}Notifications silencieuses (en arrière-plan)
Définir content-available: 1 et omettre une alerte produit une notification push silencieuse qui réveille l’app en arrière-plan pour récupérer des données, sans aucune interface. Ces notifications sont limitées par le système et nécessitent le mode d’exécution en arrière-plan des notifications distantes.
// Silent payload — no alert, just a wake-up:
// { "aps": { "content-available": 1 }, "sync": true }
let silent = "content-available wakes app quietly"
_ = silentGestionnaire de récupération en arrière-plan
Une notification silencieuse arrive dans la méthode asynchrone didReceiveRemoteNotification du délégué de l’app. Effectuez votre récupération de données et renvoyez un UIBackgroundFetchResult afin que le système sache si de nouvelles données sont arrivées et puisse gérer le budget des prochains réveils.
import UIKit
func application(
_ app: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any]
) async -> UIBackgroundFetchResult {
// fetch fresh data here
return .newData
}Contenu mutable et extensions de service
Avec mutable-content: 1, une extension de service de notification peut intercepter la notification push avant son affichage — pour déchiffrer le corps, télécharger une image jointe ou réécrire le titre. L’extension dispose de peu de temps pour terminer son travail.
// Service extension entry point (UNNotificationServiceExtension):
// override didReceive(_:withContentHandler:)
// modify bestAttemptContent, then call contentHandler
let mutable = "mutable-content enables interception"
_ = mutableLocalisation de l’alerte
Pour localiser le texte côté serveur, envoyez title-loc-key et loc-key, qui font référence aux clés des chaînes localisées de votre app, ainsi que loc-args pour les substitutions. L’appareil les affiche dans la langue de l’utilisateur sans que vous ayez à envoyer un texte prétraduit.
// Localized alert payload:
// "alert": {
// "loc-key": "NEW_MESSAGE",
// "loc-args": ["Ada"]
// }
let localized = "loc-key resolves on device"
_ = localizedMise à jour du badge
La valeur de badge définit le nombre affiché sur l’icône de l’app. Envoyer badge: 0 l’efface. Vous pouvez également le définir dans le code avec setBadgeCount après que l’utilisateur a lu le contenu, afin de maintenir le badge synchronisé avec le nombre d’éléments non lus.
import UserNotifications
func clearBadge() async {
try? await UNUserNotificationCenter.current()
.setBadgeCount(0)
}Un gestionnaire robuste
Assemblez les différents éléments : affichez les notifications au premier plan, accédez à l’écran approprié après une pression et vérifiez chaque conversion. Le gestionnaire ne plante jamais face à une charge utile inattendue et extrait toujours les données disponibles.
import UserNotifications
func handleTap(_ response: UNNotificationResponse) {
let info = response.notification.request
.content.userInfo
guard let id = info["itemId"] as? String else {
print("no item id; open home")
return
}
print("navigate to item", id)
}Vérification rapide
Rappelez-vous comment réagir à une pression sur une notification.
Récapitulatif
Vous avez appris à gérer les charges utiles :
- Le dictionnaire
apscontient le contenu visible par l’utilisateur ; les autres clés contiennent vos données, accessibles viauserInfo. - Surchargez
willPresentpour afficher les notifications reçues au premier plan etdidReceive responsepour gérer les pressions. content-available: 1déclenche des récupérations silencieuses en arrière-plan qui renvoient unUIBackgroundFetchResult.mutable-contentactive une extension de service ;loc-keylocalise le texte sur l’appareil.
Questions Fréquemment Posées
La leçon « Gérer les charges utiles des notifications » est-elle gratuite ?
Oui — le texte complet de « Gérer les charges utiles des 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 « Gérer les charges utiles des notifications » ?
Réagissez aux notifications au premier plan et en arrière-plan. 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 2 sur 4.
Combien de temps prend la leçon « Gérer les charges utiles des 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