Notification Content Extension — was es ist und wie man eine benutzerdefinierte Oberfläche für iOS erstellt

Autor: IT Sectr Veröffentlicht: 2026-03-21 Lesezeit: 8 Min.

Notification Content Extension ist eine iOS-Erweiterung, die es ermöglicht, die standardmäßige Push-Benachrichtigungsoberfläche durch eine benutzerdefinierte UIView zu ersetzen. Der Entwickler erhält die vollständige Kontrolle über die Anzeige von Inhalten: Bilder, Videos, Animationen, benutzerdefinierte Schriftarten und interaktive Elemente. Laut Apple Developer, 2025 unterstützt Notification Content Extension jede UIKit-Oberfläche im begrenzten Platz einer Benachrichtigung.

Wichtigste Punkte

  • Notification Content Extension — iOS-Erweiterung für benutzerdefinierte Push-Benachrichtigungs-UI.
  • Die Erweiterung implementiert das UNNotificationContentExtension-Protokoll mit der obligatorischen didReceive-Methode.
  • Die benutzerdefinierte Oberfläche wird im Storyboard erstellt und kann beliebige UIKit-Komponenten enthalten.
  • Die maximale Größe der Erweiterung beträgt 50 MB und sollte komprimiert 12 MB nicht überschreiten.
  • Die Erweiterung wird für Benachrichtigungen mit der angegebenen categoryIdentifier aktiviert.

Was ist Notification Content Extension

Notification Content Extension ist eine App-Erweiterung in iOS, die die Standardvorlage für die Anzeige von Push-Benachrichtigungen durch eine benutzerdefinierte UIView ersetzt. Im Gegensatz zu einer normalen Benachrichtigung, bei der der Inhalt auf Titel, Untertitel und Text beschränkt ist, ermöglicht die Erweiterung die Anzeige jeder UIKit-Oberfläche: eine Karte mit Koordinaten, ein Diagramm, eine Bildergalerie oder ein Eingabeformular.

Wie es funktioniert

Wenn iOS eine Push-Benachrichtigung mit einer angegebenen categoryIdentifier erhält, überprüft das System, ob für diese Kategorie eine Erweiterung registriert ist. Wenn ja — startet das System die Erweiterung in einem separaten Prozess und übergibt ihr den Benachrichtigungsinhalt. Die Erweiterung zeigt ihre eigene Oberfläche anstelle der Standardoberfläche an. Der Benutzer interagiert mit der benutzerdefinierten Oberfläche, ohne die Hauptanwendung zu öffnen.

Unterschied zur Notification Service Extension

Es ist wichtig, Notification Content Extension nicht mit Notification Service Extension zu verwechseln. Die Service Extension verarbeitet den Inhalt vor der Anzeige der Benachrichtigung (Herunterladen von Anhängen, Entschlüsselung). Die Content Extension ersetzt die Oberfläche nach Erhalt des fertigen Inhalts. Beide Erweiterungen können zusammenarbeiten: Die Service Extension bereitet die Daten vor, die Content Extension zeigt sie an.

MerkmalContent ExtensionService Extension
ZweckBenutzerdefinierte Benachrichtigungs-UIInhaltsänderung vor der Anzeige
AusführungszeitWährend der Benutzer die Benachrichtigung siehtBis zu 30 Sekunden im Hintergrund
OberflächeVollständige UIKit UIViewKeine Oberfläche
APIUNNotificationContentExtensionUNNotificationServiceExtension

Einschränkungen der Erweiterung

Notification Content Extension arbeitet in einem isolierten Prozess mit begrenzten Ressourcen. Die Erweiterung hat außer über App Group keinen Zugriff auf den Hauptspeicher der Anwendung über NSUserDefaults. Die Größe der Erweiterung ist auf 50 MB im entpackten Zustand begrenzt. Auch die Zeit für die Anzeige des Inhalts ist begrenzt — wenn die Erweiterung die Aktualisierung nicht in angemessener Zeit abschließt, beendet das System sie.

Notification Content Extension in Xcode erstellen

Um die Erweiterung in Xcode zu erstellen, muss ein neuer Target vom Typ Notification Content Extension hinzugefügt werden. Xcode erstellt automatisch MainInterface.storyboard mit einem Controller, der von UIViewController erbt und UNNotificationContentExtension implementiert.

Hinzufügen des Target-Erweiterung

Wählen Sie in Xcode File → New → Target → Notification Content Extension. Geben Sie den Namen der Erweiterung, die Sprache (Swift oder Objective-C) an und stellen Sie sicher, dass das Projekt mit demselben Entwicklerteam verbunden ist. Nach der Erstellung des Targets erscheint ein Ordner mit drei Dateien: MainInterface.storyboard, Info.plist und die Controller-Datei.

Info.plist-Konfiguration

Im Info.plist der Erweiterung muss zwingend das Array NSExtensionAttributes mit dem Schlüssel UNNotificationExtensionCategory angegeben werden. Dieses Array enthält die Identifikatoren der Benachrichtigungskategorien, für die die Erweiterung aktiviert wird. Der optionale Schlüssel UNNotificationExtensionInitialContentSizeRatio legt das anfängliche Seitenverhältnis der benutzerdefinierten Oberfläche für die korrekte Positionierung fest.

Architektur der Erweiterungsordner

Es wird empfohlen, eine saubere Architektur im Target-Erweiterung beizubehalten: ein separater Ordner für Controller, ein separater für benutzerdefinierte Views. Da die Erweiterung eine separate Binärdatei ist, ist der Code der Hauptanwendung nicht direkt zugänglich. Für die gemeinsame Nutzung von Code erstellen Sie ein separates Framework oder verwenden Sie App Group für Daten.

Implementierung des UNNotificationContentExtension-Protokolls

UNNotificationContentExtension ist das Protokoll, das der Controller in der Notification Content Extension implementieren muss. Die einzige obligatorische Methode ist didReceive(_:with:), die beim Empfang einer Benachrichtigung aufgerufen wird. Der Controller erhält die Benachrichtigung und den fertigen View-Controller, der mit Daten aktualisiert werden muss.

Basisimplementierung des Controllers

Der Erweiterungs-Controller muss von UIViewController erben und UNNotificationContentExtension implementieren. Das Storyboard oder xib wird mit diesem Controller verbunden. Beim Empfang einer Benachrichtigung übergibt die didReceive-Methode den Inhalt, und der Controller aktualisiert seine Views.

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

Steuerung der Oberflächengröße

Das System bestimmt die Größe der benutzerdefinierten Oberfläche basierend auf dem Schlüssel UNNotificationExtensionInitialContentSizeRatio in der Info.plist und dem aktuellen Inhalt. Es wird empfohlen, diesen Schlüssel auf 0.1 für eine minimale Anfangsgröße zu setzen und dann die Größe über preferredContentSize nach dem Laden des Inhalts zu ändern.

Oberflächenanpassung und Interaktivität

Notification Content Extension bietet völlige Freiheit bei der Erstellung der Oberfläche. Es können beliebige UIKit-Komponenten verwendet werden: UITableView, MKMapView, WKWebView, UIStackView. Allerdings ist es wichtig, den begrenzten Platz der Benachrichtigung zu berücksichtigen und die Leistung zu optimieren.

Karte zur Benachrichtigung hinzufügen

Ein beliebtes Szenario ist die Anzeige einer Karte mit Standort. Dazu wird im Storyboard der Erweiterung MKMapView hinzugefügt, und der Controller übergibt die Koordinaten aus dem Benachrichtigungsinhalt. Vergessen Sie nicht, MapKit zum Target der Erweiterung hinzuzufügen. Beachten Sie bei der Verwendung der Karte den Speicherlimit der Erweiterung — das Laden komplexer Kacheln kann die verfügbaren Ressourcen überschreiten.

Animationen und Übergänge

Notification Content Extension unterstützt UIView-Animationen, einschließlich Größenänderung, Verschiebung und Transparenz von Elementen. Beim Eintritt in den erweiterten Modus der Benachrichtigung kann eine Animation des Erscheinens von Inhalten gestartet werden. Animationen sollten kurz sein (bis zu 0,5 Sekunden) und die Interaktion des Benutzers mit der Benachrichtigung nicht beeinträchtigen. Vermeiden Sie Endlosschleifen-Animationen — sie verbrauchen Akku und verringern die Leistung.

Behandlung von Berührungen auf der benutzerdefinierten Oberfläche

Da die Erweiterung ein vollwertiger UIViewController ist, können Sie Gesten und Berührungsbehandler hinzufügen. UIKit-Gesten (UITapGestureRecognizer, UIButton) funktionieren standardmäßig. Für Aktionen, die das Öffnen der Anwendung erfordern, verwenden Sie den Delegaten der Erweiterung oder userNotificationCenter. Interaktive Elemente sollten groß genug für eine bequeme Berührung auf begrenztem Raum sein — die Mindestgröße des Touch-Targets beträgt 44x44 Punkte gemäß den Apple-Empfehlungen.

Arbeiten mit Medien und Anhängen

Medieninhalte sind die Schlüsselfunktion von Notification Content Extension. Die Benachrichtigung kann Bilder, GIFs, Audio und Video enthalten, die in der benutzerdefinierten Oberfläche angezeigt werden. Anhänge werden über UNNotificationAttachment geliefert, das entweder vom Server über das Payload oder von der Notification Service Extension nach dem Herunterladen hinzugefügt werden kann. Unterstützte Formate sind JPEG, PNG, MPEG-4 und MP3.

Medien in der Erweiterung anzeigen

Um ein Bild anzuzeigen, genügt es, UNNotificationAttachment aus dem Benachrichtigungsinhalt zu holen und von der lokalen URL zu laden. Denken Sie daran, dass die Erweiterung nur auf lokale Dateien zugreifen kann — entfernte Ressourcen müssen zuvor von der Service Extension heruntergeladen werden. Maximale Größe des Anhangs — 50 MB unter iOS 15+, die Grenze ändert sich mit jedem nachfolgenden Update. Um mehrere Bilder zu unterstützen, verwenden Sie UNNotificationAttachment mit unterschiedlichen Identifikatoren und zeigen Sie sie über UIPageViewController an.

Laden und Anzeigen von Bildern

Um ein Bild in der benutzerdefinierten Oberfläche anzuzeigen, erhält die Erweiterung UNNotificationAttachment aus dem Benachrichtigungsinhalt und lädt es von der lokalen URL. Der Anhang muss zuvor von der Notification Service Extension heruntergeladen worden sein — die Content Extension hat keinen Netzwerkzugriff. Maximale Größe des Medienanhangs — 50 MB unter iOS 15+, in früheren Versionen betrug die Grenze 10 MB. Die Erweiterung sollte das Fehlen des Anhangs korrekt behandeln und eine Fallback-Oberfläche anzeigen. Zum Vorladen von Bildern mit niedriger Auflösung verwenden Sie Thumbnail-Versionen, die von der Service Extension vor dem Anhängen erstellt wurden.

Videowiedergabe in der Benachrichtigung

iOS unterstützt die Videowiedergabe in Notification Content Extension über AVPlayerLayer. Die Erweiterung kann einen Videoplayer mit Steuerelementen direkt in der Benachrichtigung anzeigen. Dies ist besonders nützlich für Überwachungsanwendungen, Streaming oder Inhaltsvorschauen. Automatische Wiedergabe ohne Ton ist erlaubt, wenn der Benutzer Medieninhalte in dieser Benachrichtigung erwartet. Fügen Sie bei der Implementierung des Videoplayers Steuerelemente hinzu: Play/Pause, Fortschrittsbalken und Schaltfläche zum Schließen. Stellen Sie sicher, dass das Video nicht automatisch mit Ton startet — dies verstößt gegen die Apple-Empfehlungen zur Benutzererfahrung. Für eine Diashow mit mehreren Bildern verwenden Sie einen animierten Übergang zwischen ihnen über UIView.transition mit der Option für Seitenumblätter-Übergang.

Leistungsoptimierung der Erweiterung

Notification Content Extension arbeitet in einer begrenzten Umgebung mit einem Speicherlimit von etwa 50 MB. Zur Leistungsoptimierung verwenden Sie Lazy Loading von Bildern, vermeiden Sie schwere Berechnungen auf dem Hauptthread und wenden Sie Auto Layout mit einfachen Constraints an. Schwere Operationen wie Bildverarbeitung oder Datenanalyse führen Sie in Hintergrundwarteschlangen (DispatchQueue.global) aus. Bei Überschreitung des Speicherlimits beendet das System die Erweiterung, und der Benutzer sieht die Standardbenachrichtigung. Es wird empfohlen, die Erweiterung vor der Veröffentlichung über Instruments (Allocations und Time Profiler) zu profilieren sowie den Speicherverbrauch auf echten Geräten mit verschiedenen iOS-Versionen zu überprüfen.

Häufig gestellte Fragen

Kann SwiftUI in Notification Content Extension verwendet werden?

Ja, ab iOS 16 unterstützt Notification Content Extension SwiftUI über UIHostingController. Allerdings bleibt UIKit die stabilere Wahl für komplexe Oberflächen aufgrund der eingeschränkten SwiftUI-Unterstützung in Erweiterungen.

Warum wird die Erweiterung für meine Benachrichtigung nicht aktiviert?

Überprüfen Sie, ob die categoryIdentifier im Payload der Benachrichtigung mit UNNotificationExtensionCategory in der Info.plist der Erweiterung übereinstimmt. Stellen Sie auch sicher, dass die Erweiterung zum Haupt-App-Target hinzugefügt und richtig signiert ist.

Wie überträgt man Daten von der Hauptanwendung zur Erweiterung?

Verwenden Sie App Group — gemeinsamen Speicher (UserDefaults-Suite) oder Dateicontainer. Die Hauptanwendung und die Erweiterung müssen in derselben Entwicklergruppe sein und die App Groups-Funktion aktiviert haben.

Wie aktualisiert man den Inhalt der Erweiterung ohne neue Benachrichtigung?

Verwenden Sie die Methode didReceive(_:with:) mit UNNotificationContentExtensionMediaPlayPauseButtonType für Mediensteuerung oder fordern Sie ein Update über den Delegaten an. Eine vollständige Inhaltsaktualisierung ohne neue Benachrichtigung ist nicht möglich.

Wie debuggt man Notification Content Extension?

Wählen Sie das Target der Erweiterung in Xcode aus und führen Sie es auf dem Simulator aus. Verwenden Sie lldb und Breakpoints wie in einer normalen Anwendung. Zum Testen senden Sie eine Push-Benachrichtigung über die Firebase Console oder lokal über Pusher.

Zusammenfassung

  • Notification Content Extension — iOS-Erweiterung für benutzerdefinierte Anzeige von Push-Benachrichtigungen.
  • Die Erweiterung implementiert UNNotificationContentExtension und bietet eine vollständige UIKit-Oberfläche.
  • Wird für Benachrichtigungen mit übereinstimmender categoryIdentifier aktiviert.
  • Unterstützt beliebige UI-Komponenten: Karten, Bilder, Videos, Animationen.
  • Arbeitet in einem isolierten Prozess mit Zugriff über App Group.
  • Größenbeschränkung — 50 MB der entpackten Erweiterung.
  • Für Medieninhalte verwenden Sie UNNotificationAttachment, das von Service Extension vorbereitet wurde.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch