Notification Content Extension ist eine Art iOS-Erweiterung, die die standardmäßige Push-Benachrichtigungsvorlage durch eine vollständig benutzerdefinierte Benutzeroberfläche ersetzt. Entwickler können Bilder, Audioplayer, Aktionsschaltflächen, Fortschrittsbalken und benutzerdefinierte Animationen innerhalb einer Benachrichtigung anzeigen und so das Standard-Banner zu einer vollwertigen Mini-Anwendung erweitern. Laut WWDC 2025 verwendet die Erweiterung UNNotificationContentExtension und unterstützt bis zu 4 Medienanhänge in einer einzigen Benachrichtigung sowie die Verarbeitung interaktiver Aktionen über UNNotificationAction.
Wichtige Punkte
Notification Content Extension ist eine App-Erweiterung, die die Anzeige von Push-Benachrichtigungen auf iOS überschreibt. Anstelle eines Standard-Banners mit Titel, Nachrichtentext und Schaltflächen können Sie eine vollständig in Interface Builder oder programmgesteuert über UIKit oder SwiftUI gestaltete Oberfläche anzeigen.
Im Gegensatz zur Notification Service Extension, die den Inhalt vor der Anzeige ändert, ist die Content Extension nur für die visuelle Darstellung. verantwortlich. Die Erweiterung erhält die vollständige Benachrichtigung nach allen Änderungen und entscheidet, wie sie angezeigt wird. Dies ist der Hauptunterschied zwischen den beiden Arten von Benachrichtigungserweiterungen.
Die Erweiterung wird aktiviert, wenn der Benutzer eine Erweiterungsgeste ausführt — nach unten scrollen auf der Benachrichtigung oder darauf tippen (je nach Gerätemodell). iOS startet den Erweiterungsprozess, erstellt einen Controller aus dem angegebenen Nib oder Storyboard und übermittelt die Benachrichtigung über UNNotificationContentExtension .
Die Entwicklung beginnt mit dem Hinzufügen eines neuen Targets in Xcode mit der Vorlage Notification Content Extension. Xcode erstellt eine Datei MainInterface.storyboard und eine Klasse, die von UIViewController erbt und das UNNotificationContentExtension-Protokoll implementiert.
Die maximale Höhe des benutzerdefinierten Bereichs beträgt 320 Punkte auf dem iPhone (für Modelle mit großem Bildschirm) und 352 Punkte auf dem iPad. Inhalt, der diese Grenzen überschreitet, wird abgeschnitten. Zur Anpassung an verschiedene Größen wird die Verwendung von Auto Layout und UIScrollView für scrollbaren Inhalt empfohlen. Die Breite entspricht immer der Breite der Benachrichtigung und ändert sich automatisch beim Drehen des Geräts.
Die Apple Human Interface Guidelines warnen: Die Benachrichtigungsoberfläche sollte prägnant sein und nur ein primäres Element enthalten — ein Bild, einen Player, eine Karte oder ein Schnelleingabeformular. Mehrere interaktive Elemente überfordern den Benutzer und erschweren die Interaktion.
App Group ist der einzige Mechanismus zum Datenaustausch zwischen der Erweiterung und der Hauptanwendung. Über das gemeinsame App Group-Verzeichnis können zwischengespeicherte Bilder, Token und Einstellungen übertragen werden. Direkte API-Aufrufe an die Hauptanwendung oder der Zugriff auf deren UserDefaults sind aufgrund der Prozessisolierung nicht verfügbar.
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()
}
}
}
UNNotificationContentExtension ist das Hauptprotokoll, das den Lebenszyklus einer benutzerdefinierten Benachrichtigung definiert. Das Protokoll stellt Methoden zum Empfangen von Inhalten, Behandeln von Aktionen und Verwalten der Oberfläche bereit.
didReceive(_:with:) wird aufgerufen, wenn eine Benachrichtigung empfangen wird. Die Erweiterung erhält ein UNNotification-Objekt und UNNotificationContentExtensionMediaPlayPauseButtonType zur Steuerung des Media Players. In dieser Methode müssen Sie die Oberfläche konfigurieren — ein Bild laden, den Player initialisieren oder Daten anzeigen. Das System ruft diese Methode jedes Mal auf, wenn die Benachrichtigung in Echtzeit aktualisiert wird.
Es ist wichtig zu beachten, dass die Erweiterung nur begrenzte Zeit zur Ausführung hat — etwa 30 Sekunden für einen vollständigen Anzeigezyklus. Wenn die Oberfläche nicht innerhalb dieser Zeit vorbereitet ist, zeigt iOS die Systembenachrichtigung an. Für schwere Ressourcen — Laden von Bildern aus dem Netzwerk, Dekodieren von Videos — wird die Verwendung asynchroner Operationen mit Vorab-Caching über App Group empfohlen.
Das Protokoll enthält optionale Methoden für Play/Pause-Schaltflächen: mediaPlay, mediaPause, mediaPlayPauseButtonType. Wenn die Benachrichtigung Audio- oder Videoinhalte enthält, kann die Erweiterung einen integrierten Player mit einem Systemsteuerungselement anzeigen. iOS fügt automatisch eine Wiedergabeschaltfläche in der oberen rechten Ecke der Erweiterung hinzu, wenn der entsprechende Schaltflächentyp zurückgegeben wird.
UNNotificationAttachment ist ein Objekt, das einer Benachrichtigung beigefügte Mediendaten enthält. Bilder, Audiodateien und Videos werden in der Phase der Benachrichtigungserstellung auf dem Server oder in der Notification Service Extension über UNNotificationAttachment hinzugefügt.
Für Bilder: JPEG, PNG, GIF, HEIF. Für Audio: MP3, AAC, ALAC, WAV. Für Video: MPEG-4, H.264, HEVC. Maximale Größe jedes Anhangs: 50 MB, bis zu 4 Anhänge pro Benachrichtigung. Das System lädt Anhänge automatisch im Hintergrund herunter, bevor die Benachrichtigung angezeigt wird, und gewährt der Erweiterung Zugriff auf lokale URLs über Sicherheitsbereichsressourcen.
Laut Apple sollte die Erweiterung Medien nicht selbst herunterladen — UNNotificationAttachment enthält bereits eine lokale URL, nachdem das System den Download abgeschlossen hat. Wenn der Anhang jedoch nicht rechtzeitig heruntergeladen wurde (z. B. aufgrund einer schlechten Verbindung), kann die Erweiterung einen Platzhalter oder alternativen Text anzeigen.
Jeder UNNotificationAttachment stellt eine URL mit Sicherheitsbereich bereit, auf die die Erweiterung über startAccessingSecurityScopedResource() zugreifen und über stopAccessingSecurityScopedResource() freigeben muss. Diese Methoden müssen paarweise aufgerufen werden — andernfalls wird die Ressource nicht freigegeben und verursacht ein Zugriffsrechteleck.
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)
Notification Content Extension unterstützt benutzerdefinierte interaktive Aktionen — Schaltflächen, die unter dem Benachrichtigungsinhalt angezeigt werden. Aktionen werden beim Erstellen der Benachrichtigungskategorie über UNNotificationCategory registriert und können destruktiv, textbasiert oder im Hintergrund ausgeführt werden.
UNNotificationAction ist eine einfache Aktion mit einem Titel und einem optionalen Destruktiv-Flag. UNTextInputNotificationAction ist eine Aktion mit einem Texteingabefeld, z. B. für schnelle Antworten auf Nachrichten. Beide Typen unterstützen die Option UNNotificationActionOptions.authenticationRequired — die eine Geräteentsperrung vor der Ausführung erfordert.
Die Erweiterung erhält die ausgewählte Aktion über die Methode didReceive(_:withCompletionHandler:), die ein UNNotificationResponse-Objekt mit der Aktionskennung und optionalem Text übergibt. Die Erweiterung kann die Antwort selbst verarbeiten oder über den gemeinsamen App Group-Container an die Hauptanwendung weiterleiten.
let category = UNNotificationCategory(
identifier: "message",
actions: [
UNTextInputNotificationAction(
identifier: "reply",
title: "Reply",
options: .authenticationRequired
),
UNNotificationAction(
identifier: "mark_read",
title: "Mark Read",
options: .foreground
)
],
intentIdentifiers: []
)
Häufig gestellte Fragen
Content Extension ist für die visuelle Anzeige der Benachrichtigung verantwortlich, während Service Extension für die Änderung des Inhalts vor der Anzeige zuständig ist. Content Extension arbeitet nach Service Extension und kann das Nutzlast der Benachrichtigung nicht ändern.
Swift und Objective-C für UIKit. Ab iOS 16 wird auch SwiftUI zum Erstellen von Benachrichtigungsoberflächen über NotificationContentView mit Größen- und Konfigurationsmodifikatoren unterstützt.
Ja, ab iOS 16 kann die Erweiterung SwiftUI über UIHostingController verwenden. Alle UIKit-Kompetenzen — Größe, Einschränkungen, Sicherheitsbereichsressourcen — bleiben jedoch erhalten und werden auf SwiftUI-Inhalte angewendet.
4 Anhänge pro Benachrichtigung. Jeder Anhang kann bis zu 50 MB groß sein. Zu den unterstützten Formaten gehören Bilder (JPEG, PNG, HEIF), Audio (MP3, AAC) und Video (MPEG-4, H.264).
App Group — ein gemeinsames Verzeichnis auf der Festplatte. UserDefaults mit dem App Group-Suffix funktioniert ebenfalls. Direkte API-Aufrufe an die Hauptanwendung sind aufgrund der Prozessisolierung nicht verfügbar.
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