Notification Content Extension — définition et comment créer une interface personnalisée pour iOS

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

Notification Content Extension est une extension iOS qui permet de remplacer l'interface standard des notifications push par une UIView personnalisée. Le développeur obtient un contrôle total sur l'affichage du contenu : images, vidéos, animations, polices personnalisées et éléments interactifs. Selon Apple Developer, 2025, Notification Content Extension prend en charge toute interface UIKit dans l'espace limité de la notification.

Points clés

  • Notification Content Extension — extension iOS pour UI personnalisée des notifications push.
  • L'extension implémente le protocole UNNotificationContentExtension avec la méthode obligatoire didReceive.
  • L'interface personnalisée est créée dans Storyboard et peut contenir tous les composants UIKit.
  • La taille maximale de l'extension est de 50 Mo et ne doit pas dépasser 12 Mo compressée.
  • L'extension est activée pour les notifications avec le categoryIdentifier spécifié.

Qu'est-ce que Notification Content Extension

Notification Content Extension est une extension d'application dans iOS qui remplace le modèle standard d'affichage des notifications push par une UIView personnalisée. Contrairement à une notification classique où le contenu est limité au titre, au sous-titre et au corps, l'extension permet d'afficher toute interface UIKit : une carte avec coordonnées, un graphique, une galerie d'images ou un formulaire de saisie.

Comment ça fonctionne

Lorsque iOS reçoit une notification push avec un categoryIdentifier spécifié, le système vérifie si une extension est enregistrée pour cette catégorie. Si oui — le système lance l'extension dans un processus séparé et lui transmet le contenu de la notification. L'extension affiche sa propre interface au lieu de l'interface standard. L'utilisateur interagit avec l'interface personnalisée sans ouvrir l'application principale.

Différence avec Notification Service Extension

Il est important de ne pas confondre Notification Content Extension avec Notification Service Extension. La Service Extension traite le contenu avant l'affichage de la notification (téléchargement des pièces jointes, déchiffrement). La Content Extension remplace l'interface après réception du contenu prêt. Les deux extensions peuvent fonctionner ensemble : la Service Extension prépare les données, la Content Extension les affiche.

CaractéristiqueContent ExtensionService Extension
ObjectifUI personnalisée de notificationModification du contenu avant affichage
Temps d'exécutionPendant que l'utilisateur voit la notificationJusqu'à 30 secondes en arrière-plan
InterfaceUIView UIKit complèteAucune interface
APIUNNotificationContentExtensionUNNotificationServiceExtension

Limitations de l'extension

Notification Content Extension fonctionne dans un processus isolé avec des ressources limitées. L'extension n'a pas accès au stockage principal de l'application via NSUserDefaults, sauf via App Group. La taille de l'extension est limitée à 50 Mo décompressée. Le temps d'affichage du contenu est également limité — si l'extension ne termine pas la mise à jour dans un délai raisonnable, le système la termine.

Créer Notification Content Extension dans Xcode

Pour créer l'extension dans Xcode, il faut ajouter une nouvelle cible de type Notification Content Extension. Xcode crée automatiquement MainInterface.storyboard avec un contrôleur qui hérite de UIViewController et implémente UNNotificationContentExtension.

Ajout de la cible d'extension

Dans Xcode, sélectionnez File → New → Target → Notification Content Extension. Indiquez le nom de l'extension, le langage (Swift ou Objective-C) et assurez-vous que le projet est connecté à la même équipe de développement. Après la création de la cible, un dossier apparaît avec trois fichiers : MainInterface.storyboard, Info.plist et le fichier du contrôleur.

Configuration du Info.plist

Dans le Info.plist de l'extension, il est obligatoire de spécifier le tableau NSExtensionAttributes avec la clé UNNotificationExtensionCategory. Ce tableau contient les identifiants des catégories de notification pour lesquelles l'extension sera activée. La clé optionnelle UNNotificationExtensionInitialContentSizeRatio définit le rapport d'aspect initial de l'interface personnalisée pour un positionnement correct.

Architecture des dossiers de l'extension

Il est recommandé de maintenir une architecture propre dans la cible d'extension : un dossier séparé pour les contrôleurs, un autre pour les vues personnalisées. Comme l'extension est un binaire séparé, le code de l'application principale n'est pas directement accessible. Pour le partage de code, créez un framework séparé ou utilisez App Group pour les données.

Implémentation du protocole UNNotificationContentExtension

UNNotificationContentExtension est le protocole que le contrôleur de Notification Content Extension doit implémenter. La seule méthode obligatoire est didReceive(_:with:), appelée lors de la réception d'une notification. Le contrôleur reçoit la notification et le contrôleur de vue prêt qui doit être mis à jour avec les données.

Implémentation de base du contrôleur

Le contrôleur de l'extension doit hériter de UIViewController et implémenter UNNotificationContentExtension. Le Storyboard ou xib est lié à ce contrôleur. Lors de la réception d'une notification, la méthode didReceive transmet le contenu et le contrôleur met à jour ses vues.

swift
import UIKit
import UserNotifications
import UserNotificationsUI

class CustomNotificationViewController: UIViewController {

    @IBOutlet var titleLabel: UILabel!
    @IBOutlet var customImageView: UIImageView!

    func didReceive(
        notification: UNNotification
    ) {
        let content = notification.request.content
        titleLabel.text = content.title
        loadAttachment(content.attachments.first)
    }

    private func loadAttachment(attachment: UNNotificationAttachment?) {
        guard let url = attachment?.URL else { return }
        if let image = UIImage(contentsOfFile: url.path) {
            customImageView.image = image
        }
    }
}

extension CustomNotificationViewController: UNNotificationContentExtension {
    func didReceive(
        notification: UNNotification
    ) {
        didReceive(notification: notification)
    }
}

Contrôle de la taille de l'interface

Le système détermine la taille de l'interface personnalisée en fonction de la clé UNNotificationExtensionInitialContentSizeRatio dans Info.plist et du contenu actuel. Il est recommandé de définir cette clé à 0.1 pour une taille initiale minimale, puis de modifier la taille via preferredContentSize après le chargement du contenu.

Personnalisation de l'interface et interactivité

Notification Content Extension offre une liberté totale dans la création de l'interface. On peut utiliser tous les composants UIKit : UITableView, MKMapView, WKWebView, UIStackView. Cependant, il est important de tenir compte de l'espace limité de la notification et d'optimiser les performances.

Ajout d'une carte à la notification

Un des scénarios populaires est l'affichage d'une carte avec localisation. Pour cela, on ajoute MKMapView au Storyboard de l'extension, et le contrôleur transmet les coordonnées du contenu de la notification. N'oubliez pas d'ajouter MapKit à la cible de l'extension. Lors de l'utilisation de la carte, tenez compte de la limite mémoire de l'extension — le chargement de tuiles complexes peut dépasser les ressources disponibles.

Animations et transitions

Notification Content Extension prend en charge les animations UIView, y compris le redimensionnement, le déplacement et la transparence des éléments. Lors de l'entrée en mode étendu de la notification, on peut lancer une animation d'apparition du contenu. Les animations doivent être courtes (jusqu'à 0,5 seconde) et ne pas gêner l'interaction de l'utilisateur avec la notification. Évitez les animations infinies — elles consomment de la batterie et réduisent les performances.

Gestion des touches sur l'interface personnalisée

Comme l'extension est un UIViewController complet, vous pouvez ajouter des gestes et des gestionnaires de touches. Les gestes UIKit (UITapGestureRecognizer, UIButton) fonctionnent de manière standard. Pour les actions nécessitant l'ouverture de l'application, utilisez le délégué de l'extension ou userNotificationCenter. Les éléments interactifs doivent être suffisamment grands pour un toucher confortable dans un espace limité — la taille minimale de la cible tactile est de 44x44 points selon les recommandations Apple.

Travailler avec les médias et pièces jointes

Le contenu multimédia est la fonctionnalité clé de Notification Content Extension. La notification peut contenir des images, des GIF, de l'audio et de la vidéo qui sont affichés dans l'interface personnalisée. Les pièces jointes sont livrées via UNNotificationAttachment, qui peut être ajouté par le serveur via le payload ou par Notification Service Extension après téléchargement. Les formats pris en charge sont JPEG, PNG, MPEG-4 et MP3.

Affichage des médias dans l'extension

Pour afficher une image, il suffit d'obtenir UNNotificationAttachment du contenu de la notification et de le charger à partir de l'URL locale. Il est important de se rappeler que l'extension n'a accès qu'aux fichiers locaux — les ressources distantes doivent être préalablement téléchargées par Service Extension. Taille maximale de la pièce jointe — 50 Mo sous iOS 15+, la limite change à chaque mise à jour ultérieure. Pour prendre en charge plusieurs images, utilisez UNNotificationAttachment avec des identifiants différents et affichez-les via UIPageViewController.

Chargement et affichage des images

Pour afficher une image dans l'interface personnalisée, l'extension obtient UNNotificationAttachment du contenu de la notification et le charge à partir de l'URL locale. La pièce jointe doit être préalablement téléchargée par Notification Service Extension — Content Extension n'a pas accès au réseau. Taille maximale de la pièce jointe multimédia — 50 Mo sous iOS 15+, dans les versions antérieures la limite était de 10 Mo. L'extension doit gérer correctement l'absence de pièce jointe et afficher une interface de repli. Pour précharger des images basse résolution, utilisez des versions miniatures créées par Service Extension avant l'attachement.

Lecture vidéo dans la notification

iOS prend en charge la lecture vidéo dans Notification Content Extension via AVPlayerLayer. L'extension peut afficher un lecteur vidéo avec des boutons de contrôle directement dans la notification. C'est particulièrement utile pour les applications de surveillance, de streaming ou de prévisualisation de contenu. La lecture automatique sans son est autorisée à condition que l'utilisateur s'attende à du contenu multimédia dans cette notification. Lors de l'implémentation du lecteur vidéo, ajoutez des éléments de contrôle : lecture/pause, barre de progression et bouton de fermeture. Assurez-vous que la vidéo ne démarre pas automatiquement avec le son — cela viole les recommandations Apple concernant l'expérience utilisateur. Pour un diaporama de plusieurs images, utilisez une transition animée entre elles via UIView.transition avec l'option de transition de retournement de page.

Optimisation des performances de l'extension

Notification Content Extension fonctionne dans un environnement limité avec une limite mémoire d'environ 50 Mo. Pour optimiser les performances, utilisez le chargement différé des images, évitez les calculs lourds sur le thread principal et appliquez Auto Layout avec des contraintes simples. Les opérations lourdes telles que le traitement d'images ou l'analyse de données, exécutez-les dans des files d'attente en arrière-plan (DispatchQueue.global). En cas de dépassement de la limite mémoire, le système terminera l'extension et l'utilisateur verra la notification standard. Il est recommandé de profiler l'extension via Instruments (Allocations et Time Profiler) avant la publication, ainsi que de vérifier la consommation mémoire sur des appareils réels avec différentes versions d'iOS.

Foire aux questions

Peut-on utiliser SwiftUI dans Notification Content Extension ?

Oui, à partir d'iOS 16, Notification Content Extension prend en charge SwiftUI via UIHostingController. Cependant, UIKit reste le choix le plus stable pour les interfaces complexes en raison du support limité de SwiftUI dans les extensions.

Pourquoi l'extension ne s'active-t-elle pas pour ma notification ?

Vérifiez que le categoryIdentifier dans le payload de la notification correspond à UNNotificationExtensionCategory dans le Info.plist de l'extension. Assurez-vous également que l'extension a été ajoutée à la cible principale de l'application et qu'elle est correctement signée.

Comment transférer des données de l'application principale à l'extension ?

Utilisez App Group — stockage partagé (suite UserDefaults) ou conteneur de fichiers. L'application principale et l'extension doivent être dans le même groupe de développement et avoir la capacité App Groups activée.

Comment mettre à jour le contenu de l'extension sans nouvelle notification ?

Utilisez la méthode didReceive(_:with:) avec UNNotificationContentExtensionMediaPlayPauseButtonType pour le contrôle multimédia ou demandez une mise à jour via le délégué. La mise à jour complète du contenu sans nouvelle notification n'est pas possible.

Comment déboguer Notification Content Extension ?

Sélectionnez la cible de l'extension dans Xcode et lancez sur le simulateur. Utilisez lldb et les points d'arrêt comme dans une application normale. Pour tester, envoyez une notification push via Firebase Console ou localement via Pusher.

Résumé

  • Notification Content Extension — extension iOS pour l'affichage personnalisé des notifications push.
  • L'extension implémente UNNotificationContentExtension et fournit une interface UIKit complète.
  • Activée pour les notifications avec categoryIdentifier correspondant.
  • Prend en charge tous les composants d'interface : cartes, images, vidéos, animations.
  • Fonctionne dans un processus isolé avec accès via App Group.
  • Limite de taille — 50 Mo de l'extension décompressée.
  • Pour le contenu multimédia, utilisez UNNotificationAttachment préparé par Service Extension.

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