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 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.
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.
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.
| Merkmal | Content Extension | Service Extension |
|---|---|---|
| Zweck | Benutzerdefinierte Benachrichtigungs-UI | Inhaltsänderung vor der Anzeige |
| Ausführungszeit | Während der Benutzer die Benachrichtigung sieht | Bis zu 30 Sekunden im Hintergrund |
| Oberfläche | Vollständige UIKit UIView | Keine Oberfläche |
| API | UNNotificationContentExtension | UNNotificationServiceExtension |
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.
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.
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.
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.
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.
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.
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.
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)
}
}
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
Ü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.
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.
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.
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
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.
Lesen Sie auch