Notification Content Extension — vad är det, hur man skapar ett anpassat gränssnitt för iOS

Författare: IT Sectr Publicerad: 2026-03-21 Lästid: 8 min

Notification Content Extension — är en iOS-förlängning som låter dig ersätta standardgränssnittet för ett push-meddelande med en anpassad UIView. Utvecklaren får fullständig kontroll över visningen av innehåll: bilder, videor, animationer, anpassade typsnitt och interaktiva element. Enligt Apple Developer, 2025 stöder Notification Content Extension vilket UIKit-gränssnitt som helst i det begränsade utrymmet för meddelandet.

Huvudpunkter

  • Notification Content Extension — iOS-förlängning för anpassat UI för push-meddelanden.
  • Förlängningen implementerar protokollet UNNotificationContentExtension med den obligatoriska metoden didReceive.
  • Det anpassade gränssnittet skapas i Storyboard och kan innehålla alla UIKit-komponenter.
  • Maximal storlek på förlängningen — 50 MB och bör inte överstiga 12 MB i komprimerad form.
  • Förlängningen aktiveras för meddelanden med angiven categoryIdentifier.

Vad är Notification Content Extension

Notification Content Extension — är en appförlängning i iOS som åsidosätter standardmallen för visning av push-meddelanden med en anpassad UIView. Till skillnad från ett vanligt meddelande där innehållet är begränsat till titel, undertitel och brödtext, tillåter förlängningen visning av vilket UIKit-gränssnitt som helst: karta med koordinater, graf, bildgalleri eller inmatningsformulär.

Hur det fungerar

När iOS tar emot ett push-meddelande med angiven categoryIdentifier, kontrollerar systemet om förlängningen är registrerad för denna kategori. Om ja — startar systemet förlängningen i en separat process och överför meddelandets innehåll till den. Förlängningen visar sitt eget gränssnitt istället för standarden. Användaren interagerar med det anpassade gränssnittet utan att öppna huvudapplikationen.

Skillnad från Notification Service Extension

Det är viktigt att inte förväxla Notification Content Extension med Notification Service Extension. Service Extension bearbetar innehållet före visning av meddelandet (nedladdning av bilagor, dekryptering). Content Extension ersätter gränssnittet efter att ha tagit emot färdigt innehåll. Båda förlängningarna kan arbeta tillsammans: Service Extension förbereder data, Content Extension visar dem.

EgenskapContent ExtensionService Extension
SyfteAnpassat UI för meddelandeÄndra innehåll före visning
ExekveringstidMedan användaren ser meddelandetUpp till 30 sekunder i bakgrunden
GränssnittFullständig UIKit UIViewInget gränssnitt
APIUNNotificationContentExtensionUNNotificationServiceExtension

Begränsningar för förlängningen

Notification Content Extension fungerar i en isolerad process med begränsade resurser. Förlängningen har inte åtkomst till huvudapplikationens lagring via NSUserDefaults, förutom App Group. Förlängningens storlek är begränsad till 50 MB i uppackad form. Tiden för visning av innehåll är också begränsad — om förlängningen inte slutför uppdateringen inom rimlig tid, stänger systemet den.

Skapa Notification Content Extension i Xcode

För att skapa förlängningen i Xcode måste du lägga till ett nytt target av typen Notification Content Extension. Xcode skapar automatiskt MainInterface.storyboard med en kontroller som ärver UIViewController och implementerar UNNotificationContentExtension.

Lägga till target-förlängning

I Xcode väljer du File → New → Target → Notification Content Extension. Ange förlängningens namn, språk (Swift eller Objective-C) och se till att projektet är anslutet till samma utvecklingsteam. Efter att target har skapats visas en mapp med tre filer: MainInterface.storyboard, Info.plist och kontrollfilen.

Konfigurera Info.plist

I förlängningens Info.plist måste arrayen NSExtensionAttributes med nyckeln UNNotificationExtensionCategory anges. Denna array innehåller identifierare för de meddelandekategorier som förlängningen aktiveras för. Den valfria nyckeln UNNotificationExtensionInitialContentSizeRatio anger det initiala bildförhållandet för det anpassade gränssnittet för korrekt positionering.

Mapparkitektur för förlängningen

Det rekommenderas att hålla en ren arkitektur i target-förlängningen: separat mapp för kontrollerer, separat för anpassade vyer. Eftersom förlängningen är en separat binär fil är huvudapplikationens kod inte direkt tillgänglig. För att dela kod, skapa ett separat framework eller använd App Group för data.

Implementera protokollet UNNotificationContentExtension

UNNotificationContentExtension — ett protokoll som kontrollern i Notification Content Extension måste implementera. Den enda obligatoriska metoden är didReceive(_:with:), som anropas vid mottagning av meddelande. Kontrollern tar emot meddelandet och en färdig view controller som måste uppdateras med data.

Grundläggande implementering av kontrollern

Förlängningens kontroller måste ärva UIViewController och implementera UNNotificationContentExtension. Storyboard eller xib är kopplat till denna kontroller. Vid mottagning av meddelande överför metoden didReceive innehållet och kontrollern uppdaterar sina vyer.

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

Hantering av gränssnittsstorlek

Systemet bestämmer storleken på det anpassade gränssnittet baserat på nyckeln UNNotificationExtensionInitialContentSizeRatio i Info.plist och aktuellt innehåll. Det rekommenderas att ställa in denna nyckel till värdet 0.1 för minimal initial storlek och sedan ändra storleken via preferredContentSize efter att innehållet har laddats.

Anpassa gränssnittet och interaktivitet

Notification Content Extension ger full frihet vid skapandet av gränssnittet. Du kan använda alla UIKit-komponenter: UITableView, MKMapView, WKWebView, UIStackView. Du måste dock ta hänsyn till meddelandets begränsade utrymme och optimera prestanda.

Lägga till karta i meddelandet

Ett av de populära scenarierna är att visa en karta med plats. För detta läggs MKMapView till i förlängningens Storyboard och kontrollern överför koordinater från meddelandets innehåll. Glöm inte att lägga till MapKit i förlängningens target. När du använder kartan, ta hänsyn till förlängningens minnesbegränsning — inläsning av komplexa brickor kan överskrida tillgängliga resurser.

Animationer och övergångar

Notification Content Extension stöder UIView-animationer, inklusive ändring av storlek, förflyttning och genomskinlighet av element. Vid inträde i förlängningsläge för meddelandet kan du starta en animation för innehållets uppkomst. Animationer bör vara korta (upp till 0.5 sekunder) och inte störa användaren i interaktionen med meddelandet. Undvik oändliga animationer — de förbrukar batteri och minskar prestanda.

Hantering av beröring i det anpassade gränssnittet

Eftersom förlängningen är en fullvärdig UIViewController kan du lägga till gester och beröringshantering. UIKit-gester (UITapGestureRecognizer, UIButton) fungerar standardmässigt. För åtgärder som kräver att applikationen öppnas, använd förlängningens delegat eller userNotificationCenter. Interaktiva element bör vara tillräckligt stora för bekväm beröring i det begränsade utrymmet — den minsta touch target-storleken är 44x44 punkter enligt Apples rekommendationer.

Arbeta med media och bilagor

Multimediainnehåll — en nyckelfunktion i Notification Content Extension. Meddelandet kan innehålla bilder, GIF, ljud och video som visas i det anpassade gränssnittet. Bilagor levereras via UNNotificationAttachment, som kan läggas till både av servern via payload och av Notification Service Extension efter nedladdning. Format som stöds är JPEG, PNG, MPEG-4 och MP3.

Visa media i förlängningen

För att visa en bild räcker det att hämta UNNotificationAttachment från meddelandets innehåll och ladda den från en lokal URL. Det är viktigt att komma ihåg att förlängningen endast har åtkomst till lokala filer — fjärresurser måste först laddas ner av Service Extension. Maximal storlek på bilagan — 50 MB på iOS 15+, gränsen ökar med varje efterföljande uppdatering. För stöd för flera bilder, använd UNNotificationAttachment med olika identifierare och visa dem via UIPageViewController.

Ladda och visa bilder

För att visa en bild i det anpassade gränssnittet hämtar förlängningen UNNotificationAttachment från meddelandets innehåll och laddar den från en lokal URL. Bilagan måste först laddas ner av Notification Service Extension — Content Extension har inte åtkomst till nätverket. Maximal storlek på mediabilagan — 50 MB på iOS 15+, i tidigare versioner var gränsen 10 MB. Förlängningen måste korrekt hantera avsaknaden av bilaga och visa ett reservgränssnitt. För förladdning av bilder med låg upplösning, använd miniatyrversioner skapade av Service Extension före bifogning.

Spela upp video i meddelandet

iOS stöder videouppspelning i Notification Content Extension via AVPlayerLayer. Förlängningen kan visa en videospelare med kontrollknappar direkt i meddelandet. Detta är särskilt användbart för videoövervaknings-, streaming- eller förhandsgranskningsapplikationer. Automatisk uppspelning utan ljud är tillåten under förutsättning att användaren förväntar sig multimediainnehåll i detta meddelande. När du implementerar videospelaren, lägg till kontroll element: play/pause, förloppsindikator och stängningsknapp. Se till att videon inte startar automatiskt med ljud — detta bryter mot Apples rekommendationer för användarupplevelse. För en bildspel med flera bilder, använd en animerad övergång mellan dem via UIView.transition med övergångsalternativet för sidvändning.

Optimera förlängningens prestanda

Notification Content Extension fungerar i en begränsad miljö med en minnesgräns på cirka 50 MB. För att optimera prestanda, använd lat laddning av bilder, undvik tunga beräkningar på huvudtråden och tillämpa Auto Layout med enkla begränsningar. Utför tunga operationer som bildbehandling eller dataparsning i bakgrundsköer (DispatchQueue.global). Om minnesgränsen överskrids kommer systemet att stänga förlängningen och användaren kommer att se standardmeddelandet. Det rekommenderas att profilera förlängningen via Instruments (Allocations och Time Profiler) före publicering, samt kontrollera minnesförbrukningen på verkliga enheter med olika iOS-versioner.

Vanliga frågor

Kan SwiftUI användas i Notification Content Extension?

Ja, från och med iOS 16 stöder Notification Content Extension SwiftUI via UIHostingController. UIKit förblir dock ett stabilare val för komplexa gränssnitt på grund av begränsat SwiftUI-stöd i förlängningar.

Varför aktiveras inte förlängningen för mitt meddelande?

Kontrollera att categoryIdentifier i meddelandets payload matchar UNNotificationExtensionCategory i förlängningens Info.plist. Se också till att förlängningen har lagts till i huvudappens target och är korrekt signerad.

Hur överför man data från huvudapplikationen till förlängningen?

Använd App Group — delad lagring (UserDefaults suite) eller filbehållare. Huvudapplikationen och förlängningen måste vara i samma utvecklargrupp och ha App Groups-funktionen aktiverad.

Hur uppdaterar man förlängningens innehåll utan nytt meddelande?

Använd metoden didReceive(_:with:) med UNNotificationContentExtensionMediaPlayPauseButtonType för mediakontroll eller begär uppdatering via delegaten. Fullständig uppdatering av innehåll utan nytt meddelande är inte möjlig.

Hur felsöker man Notification Content Extension?

Välj förlängningens target i Xcode och kör på simulatorn. Använd lldb och brytpunkter som i en vanlig applikation. För testning, skicka ett push-meddelande via Firebase Console eller lokalt via Pusher.

Sammanfattning

  • Notification Content Extension — iOS-förlängning för anpassad visning av push-meddelanden.
  • Förlängningen implementerar UNNotificationContentExtension och ger ett fullständigt UIKit-gränssnitt.
  • Aktiveras för meddelanden med matchande categoryIdentifier.
  • Stöder alla UI-komponenter: kartor, bilder, videor, animationer.
  • Fungerar i isolerad process med åtkomst via App Group.
  • Storleksbegränsning — 50 MB för uppackad förlängning.
  • För multimediainnehåll, använd UNNotificationAttachment förberedd av Service Extension.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också