Notification Content Extension — wat is het, hoe maak je een aangepaste interface voor iOS

Auteur: IT Sectr Gepubliceerd: 2026-03-21 Leestijd: 8 min

Notification Content Extension — is een iOS-extensie waarmee u de standaardinterface van een pushmelding kunt vervangen door een aangepaste UIView. De ontwikkelaar krijgt volledige controle over de weergave van inhoud: afbeeldingen, video's, animaties, aangepaste lettertypen en interactieve elementen. Volgens Apple Developer, 2025 ondersteunt Notification Content Extension elke UIKit-interface in de beperkte ruimte van de melding.

Belangrijkste punten

  • Notification Content Extension — iOS-extensie voor aangepaste UI van pushmeldingen.
  • De extensie implementeert het UNNotificationContentExtension-protocol met de verplichte didReceive-methode.
  • De aangepaste interface wordt gemaakt in Storyboard en kan elke UIKit-componenten bevatten.
  • Maximale grootte van de extensie — 50 MB en mag niet meer dan 12 MB in gecomprimeerde vorm zijn.
  • De extensie wordt geactiveerd voor meldingen met de opgegeven categoryIdentifier.

Wat is Notification Content Extension

Notification Content Extension — is een app-extensie in iOS die het standaardweergavesjabloon van een pushmelding overschrijft met een aangepaste UIView. In tegenstelling tot een gewone melding, waar de inhoud beperkt is tot titel, subtitel en tekst, kan de extensie elke UIKit-interface weergeven: een kaart met coördinaten, een grafiek, een afbeeldingsgalerij of een invoerformulier.

Hoe het werkt

Wanneer iOS een pushmelding ontvangt met een opgegeven categoryIdentifier, controleert het systeem of de extensie is geregistreerd voor deze categorie. Zo ja — start het systeem de extensie in een apart proces en geeft de inhoud van de melding door. De extensie toont zijn eigen interface in plaats van de standaard. De gebruiker interageert met de aangepaste interface zonder de hoofdapplicatie te openen.

Verschil met Notification Service Extension

Het is belangrijk om Notification Content Extension niet te verwarren met Notification Service Extension. Service Extension verwerkt de inhoud voordat de melding wordt weergegeven (bijlagen downloaden, decoderen). Content Extension vervangt de interface na ontvangst van de gereed inhoud. Beide extensies kunnen samenwerken: Service Extension bereidt gegevens voor, Content Extension toont ze.

KenmerkContent ExtensionService Extension
DoelAangepaste UI van meldingInhoud wijzigen vóór weergave
UitvoeringstijdZolang gebruiker melding zietTot 30 seconden op achtergrond
InterfaceVolledige UIKit UIViewGeen interface
APIUNNotificationContentExtensionUNNotificationServiceExtension

Beperkingen van de extensie

Notification Content Extension werkt in een geïsoleerd proces met beperkte bronnen. De extensie heeft geen toegang tot de hoofdopslag van de applicatie via NSUserDefaults, behalve App Group. De grootte van de extensie is beperkt tot 50 MB in uitgepakte vorm. De tijd voor het weergeven van inhoud is ook beperkt — als de extensie de update niet binnen een redelijke tijd voltooit, wordt deze door het systeem gesloten.

Notification Content Extension maken in Xcode

Om de extensie in Xcode te maken, moet u een nieuw target van het type Notification Content Extension toevoegen. Xcode maakt automatisch MainInterface.storyboard met een controller die overerft van UIViewController en UNNotificationContentExtension implementeert.

Target-extensie toevoegen

Selecteer in Xcode File → New → Target → Notification Content Extension. Geef de naam van de extensie, de taal (Swift of Objective-C) op en zorg ervoor dat het project is verbonden met hetzelfde ontwikkelteam. Na het maken van het target verschijnt er een map met drie bestanden: MainInterface.storyboard, Info.plist en het controllerbestand.

Info.plist configureren

In Info.plist van de extensie wordt verplicht de array NSExtensionAttributes met de sleutel UNNotificationExtensionCategory opgegeven. Deze array bevat de identificatiecodes van de meldingscategorieën waarvoor de extensie wordt geactiveerd. De optionele sleutel UNNotificationExtensionInitialContentSizeRatio bepaalt de initiële beeldverhouding van de aangepaste interface voor correcte positionering.

Mapstructuur van de extensie

Het wordt aanbevolen een schone architectuur in de target-extensie te behouden: aparte map voor controllers, aparte map voor aangepaste weergaven. Omdat de extensie een apart binair bestand is, is de code van de hoofdapplicatie niet direct toegankelijk. Maak voor het delen van code een apart framework of gebruik App Group voor gegevens.

Implementatie van het UNNotificationContentExtension-protocol

UNNotificationContentExtension — een protocol dat de controller in Notification Content Extension moet implementeren. De enige verplichte methode is didReceive(_:with:), aangeroepen bij ontvangst van een melding. De controller ontvangt de melding en een gereed view controller die met gegevens moet worden bijgewerkt.

Basisimplementatie van de controller

De controller van de extensie moet overerven van UIViewController en UNNotificationContentExtension implementeren. Storyboard of xib is gekoppeld aan deze controller. Bij ontvangst van een melding geeft de methode didReceive de inhoud door en werkt de controller zijn weergaven bij.

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)
    }
}

Beheer van interfacegrootte

Het systeem bepaalt de grootte van de aangepaste interface op basis van de sleutel UNNotificationExtensionInitialContentSizeRatio in Info.plist en de huidige inhoud. Het wordt aanbevolen deze sleutel in te stellen op 0.1 voor een minimale initiële grootte en vervolgens de grootte te wijzigen via preferredContentSize na het laden van de inhoud.

Interface aanpassen en interactiviteit

Notification Content Extension geeft volledige vrijheid bij het maken van de interface. U kunt elke UIKit-componenten gebruiken: UITableView, MKMapView, WKWebView, UIStackView. Houd echter rekening met de beperkte ruimte van de melding en optimaliseer de prestaties.

Kaart toevoegen aan melding

Een van de populaire scenario's is het weergeven van een kaart met een locatie. Hiervoor wordt in de Storyboard van de extensie een MKMapView toegevoegd en geeft de controller coördinaten door uit de inhoud van de melding. Vergeet niet MapKit toe te voegen aan het target van de extensie. Houd bij gebruik van de kaart rekening met de geheugenlimiet van de extensie — het laden van complexe tegels kan de beschikbare bronnen overschrijden.

Animaties en overgangen

Notification Content Extension ondersteunt UIView-animaties, waaronder het wijzigen van afmetingen, verplaatsen en transparantie van elementen. Bij het ingaan van de uitgebreide modus van de melding kunt u een animatie starten voor het verschijnen van inhoud. Animaties moeten kort zijn (tot 0.5 seconde) en de gebruiker niet hinderen bij interactie met de melding. Vermijd oneindige animaties — ze verbruiken de batterij en verminderen de prestaties.

Verwerken van aanrakingen in de aangepaste interface

Omdat de extensie een volwaardige UIViewController is, kunt u gebaren en aanraakafhandeling toevoegen. UIKit-gebaren (UITapGestureRecognizer, UIButton) werken standaard. Voor acties die het openen van de applicatie vereisen, gebruikt u de delegate van de extensie of userNotificationCenter. Interactieve elementen moeten groot genoeg zijn om comfortabel te kunnen worden aangeraakt in de beperkte ruimte — de minimale touch target-grootte is 44x44 punten volgens de aanbevelingen van Apple.

Werken met media en bijlagen

Mediainhoud — een belangrijkste mogelijkheid van Notification Content Extension. De melding kan afbeeldingen, GIF, audio en video bevatten die worden weergegeven in de aangepaste interface. Bijlagen worden geleverd via UNNotificationAttachment, die zowel door de server via payload als door Notification Service Extension na downloaden kan worden toegevoegd. Ondersteunde formaten zijn JPEG, PNG, MPEG-4 en MP3.

Media weergeven in de extensie

Om een afbeelding weer te geven, volstaat het om UNNotificationAttachment uit de inhoud van de melding te halen en deze van een lokale URL te laden. Het is belangrijk te onthouden dat de extensie alleen toegang heeft tot lokale bestanden — externe bronnen moeten vooraf door Service Extension worden gedownload. Maximale grootte van de bijlage — 50 MB op iOS 15+, de limiet wordt verhoogd met elke volgende update. Voor ondersteuning van meerdere afbeeldingen gebruikt u UNNotificationAttachment met verschillende identificatiecodes en geeft u ze weer via UIPageViewController.

Afbeeldingen laden en weergeven

Om een afbeelding in de aangepaste interface weer te geven, haalt de extensie UNNotificationAttachment uit de inhoud van de melding en laadt deze van een lokale URL. De bijlage moet vooraf door Notification Service Extension zijn gedownload — Content Extension heeft geen toegang tot het netwerk. Maximale grootte van de mediabijlage — 50 MB op iOS 15+, in eerdere versies was de limiet 10 MB. De extensie moet de afwezigheid van een bijlage correct verwerken en een fallback-interface weergeven. Gebruik voor het vooraf laden van afbeeldingen met lage resolutie miniatuurversies die door Service Extension zijn gemaakt vóór het toevoegen.

Video afspelen in de melding

iOS ondersteunt het afspelen van video in Notification Content Extension via AVPlayerLayer. De extensie kan een videospeler met bedieningsknoppen direct in de melding weergeven. Dit is vooral nuttig voor beveiligingscamera-apps, streaming of voorbeeld van inhoud. Automatisch afspelen zonder geluid is toegestaan op voorwaarde dat de gebruiker mediainhoud in deze melding verwacht. Voeg bij het implementeren van de videospeler bedieningselementen toe: play/pause, voortgangsbalk en sluitknop. Zorg ervoor dat de video niet automatisch start met geluid — dit schendt de aanbevelingen van Apple voor gebruikerservaring. Gebruik voor een diavoorstelling van meerdere afbeeldingen een geanimeerde overgang ertussen via UIView.transition met de overgangsoptie voor het omslaan van een pagina.

Prestatieoptimalisatie van de extensie

Notification Content Extension werkt in een beperkte omgeving met een geheugenlimiet van ongeveer 50 MB. Gebruik voor prestatieoptimalisatie lui laden van afbeeldingen, vermijd zware berekeningen op de hoofdthread en pas Auto Layout toe met eenvoudige constraints. Voer zware bewerkingen zoals beeldverwerking of gegevensparsing uit op de achtergrond (DispatchQueue.global). Bij overschrijding van de geheugenlimiet sluit het systeem de extensie en ziet de gebruiker de standaardmelding. Het wordt aanbevolen de extensie te profileren via Instruments (Allocations en Time Profiler) vóór publicatie, evenals het controleren van het geheugengebruik op echte apparaten met verschillende iOS-versies.

Veelgestelde vragen

Kan SwiftUI worden gebruikt in Notification Content Extension?

Ja, vanaf iOS 16 ondersteunt Notification Content Extension SwiftUI via UIHostingController. UIKit blijft echter een stabielere keuze voor complexe interfaces vanwege de beperkte ondersteuning van SwiftUI in extensies.

Waarom wordt de extensie niet geactiveerd voor mijn melding?

Controleer of de categoryIdentifier in de payload van de melding overeenkomt met UNNotificationExtensionCategory in Info.plist van de extensie. Zorg er ook voor dat de extensie is toegevoegd aan het hoofdapp-target en correct is ondertekend.

Hoe gegevens van de hoofdapplicatie naar de extensie doorgeven?

Gebruik App Group — gedeelde opslag (UserDefaults suite) of bestandscontainer. De hoofdapplicatie en extensie moeten in dezelfde ontwikkelaarsgroep zitten en de mogelijkheid App Groups moet zijn ingeschakeld.

Hoe de inhoud van de extensie bijwerken zonder nieuwe melding?

Gebruik de methode didReceive(_:with:) met UNNotificationContentExtensionMediaPlayPauseButtonType voor mediabeheer of vraag een update aan via de delegate. Volledige update van inhoud zonder nieuwe melding is niet mogelijk.

Hoe debug ik Notification Content Extension?

Selecteer het extensie-target in Xcode en voer uit op de simulator. Gebruik lldb en breakpoints zoals in een gewone applicatie. Stuur voor testen een pushmelding via Firebase Console of lokaal via Pusher.

Samenvatting

  • Notification Content Extension — iOS-extensie voor aangepaste weergave van pushmeldingen.
  • De extensie implementeert UNNotificationContentExtension en biedt een volledige UIKit-interface.
  • Wordt geactiveerd voor meldingen met overeenkomende categoryIdentifier.
  • Ondersteunt elke UI-componenten: kaarten, afbeeldingen, video's, animaties.
  • Werkt in een geïsoleerd proces met toegang via App Group.
  • Groottebeperking — 50 MB voor uitgepakte extensie.
  • Gebruik voor mediainhoud UNNotificationAttachment voorbereid door Service Extension.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook