Notification Content Extension — essentie, aangepaste UI en configuratie in iOS

Auteur: IT Sectr Gepubliceerd: 2026-06-15 Leestijd: 9 min

Notification Content Extension — is een type iOS-extensie dat de standaard pushmelding-sjabloon vervangt door een volledig aangepaste gebruikersinterface. De ontwikkelaar krijgt de mogelijkheid om afbeeldingen, een audioplayer, actieknoppen, voortgangsbalken en aangepaste animatie in de melding weer te geven, waardoor de standaard banner wordt uitgebreid tot een volwaardige mini-applicatie. Volgens WWDC 2025 gebruikt de extensie UNNotificationContentExtension en ondersteunt het tot 4 media-bijlagen in één melding, evenals de verwerking van interactieve acties via UNNotificationAction.

Belangrijkste punten

  • Notification Content Extension maakt een aangepaste interface voor pushmeldingen in plaats van de standaard systeemsjabloon
  • Architectuur is gebaseerd op het protocol UNNotificationContentExtension met methoden didReceive(_:with:) en didReceive(_:withCompletionHandler:)
  • De extensie kan media-bijlagen — afbeeldingen, audio en video — direct in de melding weergeven zonder de app te openen
  • Interactieve meldingen ondersteunen aangepaste acties met feedback en tekstinvoer
  • De interfacegrootte is beperkt — maximale hoogte van een aangepaste melding 320 punten op iPhone en 352 op iPad

Wat is Notification Content Extension

Notification Content Extension — is een app-extensie die de weergave van pushmeldingen op iOS overschrijft. In plaats van een standaard banner met titel, berichttekst en knoppen kan een interface worden getoond die volledig is ontworpen in Interface Builder of programmatisch via UIKit of SwiftUI.

In tegenstelling tot Notification Service Extension, die de inhoud wijzigt vóór weergave, is Content Extension alleen verantwoordelijk voor de visuele presentatie. De extensie ontvangt de kant-en-klare melding na alle wijzigingen en beslist hoe deze weer te geven. Dit is het belangrijkste verschil tussen de twee typen meldingsextensies.

De extensie wordt geactiveerd wanneer de gebruiker een uitbreidingsgebaar uitvoert — de melding naar beneden scrollt of erop klikt (afhankelijk van het apparaatmodel). iOS start het extensieproces, maakt de controller van de opgegeven nib of storyboard en geeft de melding door via UNNotificationContentExtension.

Een aangepaste meldingsinterface maken

De ontwikkeling begint met het toevoegen van een nieuw target in Xcode met de sjabloon Notification Content Extension. Xcode maakt het bestand MainInterface.storyboard en een klasse die overerft van UIViewController, die het protocol UNNotificationContentExtension implementeert.

Grootte en beperkingen van de interface

Maximale hoogte van het aangepaste gebied — 320 punten op iPhone (voor modellen met groot scherm) en 352 punten op iPad. Inhoud die buiten deze grenzen valt, wordt afgesneden. Voor aanpassing aan verschillende formaten wordt aanbevolen Auto Layout en UIScrollView te gebruiken voor scrollbare inhoud. De breedte is altijd gelijk aan de breedte van de melding en verandert automatisch bij rotatie van het apparaat.

Apple Human Interface Guidelines waarschuwen: de meldingsinterface moet beknopt zijn en slechts één hoofdelement bevatten — een afbeelding, speler, kaart of snel invoerformulier. Meerdere interactieve elementen overbelasten de gebruiker en bemoeilijken de interactie.

Communicatie met de hoofdapp

App Group — het enige mechanisme voor gegevensuitwisseling tussen de extensie en de hoofdapp. Via de gedeelde App Group-directory kunnen gecachte afbeeldingen, tokens en instellingen worden doorgegeven. Directe API-aanroepen van de hoofdapp of toegang tot de UserDefaults zijn niet beschikbaar vanwege processisolatie.

swift
class NotificationViewController: UIViewController {

    func didReceive(
        _ notification: UNNotification
    ) {
        guard let attachment = notification
            .request.content.attachments.first()
        else { return }
        if attachment.url.startAccessingSecurityScopedResource() {
            imageView.image = UIImage(contentsOfFile:
                attachment.url.path)
            attachment.url.stopAccessingSecurityScopedResource()
        }
    }
}

Protocol UNNotificationContentExtension

UNNotificationContentExtension — het hoofdprotocol dat de levenscyclus van een aangepaste melding definieert. Het protocol biedt methoden voor het ontvangen van inhoud, verwerken van acties en beheren van de interface.

Methode didReceive:with:

didReceive(_:with:) wordt aangeroepen bij ontvangst van een melding. De extensie ontvangt een UNNotification-object en UNNotificationContentExtensionMediaPlayPauseButtonType voor het beheren van de mediaspeler. In deze methode moet de interface worden geconfigureerd — afbeelding laden, speler initialiseren of gegevens weergeven. Het systeem roept deze methode elke keer aan wanneer de melding in realtime wordt bijgewerkt.

Het is belangrijk om in gedachten te houden dat de extensie beperkte tijd heeft voor uitvoering — ongeveer 30 seconden voor een volledige weergavecyclus. Als de interface niet binnen deze tijd gereed is, toont iOS een systeemmelding. Voor zware bronnen — laden van afbeeldingen via het netwerk, decoderen van video — wordt aanbevolen asynchrone bewerkingen te gebruiken met vooraf cachen via App Group.

Mediaspeler beheren

Het protocol bevat optionele methoden voor play/pause-knoppen: mediaPlay, mediaPause en mediaPlayPauseButtonType. Als de melding audio- of video-inhoud bevat, kan de extensie een ingebouwde speler met een systeembedieningselement tonen. iOS voegt automatisch een afspeelknop toe in de rechterbovenhoek van de extensie wanneer het juiste knoptype wordt geretourneerd.

Media-bijlagen en hun verwerking

UNNotificationAttachment — het object dat de media-gegevens bevat die aan de melding zijn gekoppeld. Afbeeldingen, audiobestanden en video worden toegevoegd in de fase van het aanmaken van de melding op de server of in Notification Service Extension via UNNotificationAttachment.

Ondersteunde formaten

Voor afbeeldingen: JPEG, PNG, GIF, HEIF. Voor audio: MP3, AAC, ALAC, WAV. Voor video: MPEG-4, H.264, HEVC. Maximale grootte van elke bijlage — 50 MB, tot 4 bijlagen per melding. Het systeem downloadt bijlagen automatisch op de achtergrond vóór weergave van de melding en biedt de extensie toegang tot lokale URL's via security-scoped bronnen.

Volgens Apple mag de extensie media niet zelfstandig laden — UNNotificationAttachment bevat al een lokale URL na voltooiing van de download door het systeem. Als de bijlage echter niet op tijd is gedownload (bijvoorbeeld bij slechte verbinding), kan de extensie een placeholder of alternatieve tekst weergeven.

Werken met security-scoped bronnen

Elke UNNotificationAttachment biedt een security-scoped URL, waartoe de extensie toegang moet krijgen via startAccessingSecurityScopedResource() en moet vrijgeven via stopAccessingSecurityScopedResource(). Deze methoden moeten in paren worden aangeroepen — anders wordt de bron niet vrijgemaakt en veroorzaakt dit een lekkage van toegangsrechten.

swift
let attachment = notification.request.content.attachments.first()
guard attachment.url.startAccessingSecurityScopedResource()
else { return }
defer { attachment.url.stopAccessingSecurityScopedResource() }
let data = try Data(contentsOf: attachment.url)
imageView.image = UIImage(data: data)

Interactieve meldingen en acties

Notification Content Extension ondersteunt aangepaste interactieve acties — knoppen die onder de meldingsinhoud worden weergegeven. Acties worden geregistreerd bij het aanmaken van de meldingscategorie via UNNotificationCategory en kunnen destructief, tekstueel of achtergrond zijn.

Soorten acties

UNNotificationAction — een eenvoudige actie met een titel en optionele destructieve vlag. UNTextInputNotificationAction — een actie met een tekstinvoerveld, bijvoorbeeld voor snel antwoord op een bericht. Beide typen ondersteunen de optie UNNotificationActionOptions.authenticationRequired — vereiste om het apparaat te ontgrendelen vóór uitvoering.

De extensie ontvangt de geselecteerde actie via de methode didReceive(_:withCompletionHandler:), waarbij een UNNotificationResponse-object met de actie-ID en optionele tekst wordt doorgegeven. De extensie kan het antwoord zelfstandig verwerken of doorgeven aan de hoofdapp via de gedeelde App Group-container.

swift
let category = UNNotificationCategory(
    identifier: "message",
    actions: [
        UNTextInputNotificationAction(
            identifier: "reply",
            title: "Reply",
            options: .authenticationRequired
        ),
        UNNotificationAction(
            identifier: "mark_read",
            title: "Mark Read",
            options: .foreground
        )
    ],
    intentIdentifiers: []
)

Veelgestelde vragen

Wat is het verschil tussen Notification Content Extension en Service Extension?

Content Extension is verantwoordelijk voor de visuele weergave van de melding, terwijl Service Extension verantwoordelijk is voor het wijzigen van de inhoud vóór weergave. Content Extension werkt na Service Extension en kan de payload van de melding niet wijzigen.

Welke programmeertalen worden ondersteund?

Swift en Objective-C voor UIKit. Vanaf iOS 16 wordt ook SwiftUI ondersteund voor het maken van de meldingsinterface via NotificationContentView met modificatoren voor grootte en configuratie.

Kan SwiftUI worden gebruikt in Notification Content Extension?

Ja, vanaf iOS 16 kan de extensie SwiftUI gebruiken via UIHostingController. Alle competenties van UIKit — grootte, beperkingen, security-scoped bronnen — blijven echter behouden en worden toegepast op SwiftUI-inhoud.

Hoeveel media-bijlagen kunnen aan een melding worden toegevoegd?

Tot 4 bijlagen per melding. Elke bijlage maximaal 50 MB. Ondersteund worden afbeeldingen (JPEG, PNG, HEIF), audio (MP3, AAC) en video (MPEG-4, H.264).

Hoe gegevens van de extensie naar de hoofdapp overbrengen?

Via App Group — een gedeelde directory op schijf. UserDefaults met app group suffix werkt ook. Directe API-aanroepen van de hoofdapp zijn niet beschikbaar vanwege processisolatie van de extensie.

Samenvatting

  • Notification Content Extension vervangt de standaard meldingsinterface door een aangepaste met willekeurige visuele elementen
  • Architectuur gebruikt het protocol UNNotificationContentExtension met didReceive-methoden voor het bijwerken van de interface
  • UNNotificationAttachment biedt media-bijlagen met automatisch achtergrond downloaden en security-scoped toegang
  • Interactieve acties ondersteunen tekstinvoer en destructieve bewerkingen via UNNotificationAction
  • Maximale interfacehoogte — 320 punten op iPhone, voor aanpassing van inhoud wordt UIScrollView aanbevolen
  • Gegevensuitwisseling met de hoofdapp — alleen via App Group en gedeelde directory op schijf

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