Rich Notification: vad är det, mediainnehåll och skapande av aviseringar

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

Rich Notification är ett utökat format för iOS-pushaviseringar som inkluderar mediabilagor, interaktiva knappar och anpassade gränssnitt för att förbättra användarupplevelsen. Till skillnad från standardtextaviseringar kan Rich Notification visa bilder, video och ljud direkt i banner eller på låsskärmen. Enligt Apple Developer Documentation, 2026 stöder UNNotificationAttachment upp till 10 filer i en avisering och skalar automatiskt dem för optimal visning på alla enheter.

Huvudpunkter

  • Mediabilagor — Rich Notification stöder bilder (JPEG, PNG, GIF), video (MP4, MOV upp till 30 sekunder) och ljud (MP3, AAC, WAV) via UNNotificationAttachment.
  • Interaktivitet — knappar och textinmatning läggs till via UNNotificationAction och UNTextInputNotificationAction, kopplade till aviseringskategorier.
  • Service Extension — obligatorisk komponent för nedladdning av media: den laddar ner bilagan från URL i payload och lägger till den i innehållet.
  • Content Extension — skapar ett helt anpassat aviseringsgränssnitt med valfritt UI, animationer och gesthantering.
  • Begränsningar — maximal bilagestorlek 10 MB, minnesgräns för tillägg 50 MB, bearbetningstid upp till 30 sekunder.

Vad är Rich Notification

Rich Notification är en iOS-pushavisering som inte bara innehåller text, utan även mediabilagor, interaktiva element och ett anpassat gränssnitt. Termen “rich” (rik) återspeglar möjligheten att inkludera bilder, video, ljud, åtgärdsknappar och textinmatning i aviseringen, vilket förvandlar en enkel varning till ett fullfjädrat interaktivt element.

Utvecklingen av aviseringar i iOS

Apple introducerade stöd för Rich Notification i iOS 10 tillsammans med UserNotifications-ramverket. Innan dess kunde push-aviseringar endast innehålla text, ljud och badge. iOS 10 introducerade UNNotificationServiceExtension och UNNotificationContentExtension, som öppnade möjligheten att modifiera innehåll och skapa anpassade gränssnitt. I senare versioner lades stöd för SwiftUI i Content Extension, animerade GIF och förbättrad medieskalning till.

Fördelar jämfört med standardaviseringar

Rich Notification ökar avsevärt användarengagemanget. Apples forskning visar att aviseringar med bilder får 30–40 % fler interaktioner jämfört med textbaserade. En produktbild, videoförhandsvisning eller snabbsvarsknapp gör att användaren kan fatta ett beslut direkt från aviseringen utan att öppna appen. Detta förkortar vägen till målåtgärden och förbättrar användarupplevelsen.

Typer av mediabilagor och deras format

UNNotificationAttachment stöder tre mediekategorier: bilder, video och ljud. Varje typ har sina egna begränsningar när det gäller format, storlek och varaktighet. Systemet skalar automatiskt bilder till aviseringsstorleken och begränsar videons längd till 30 sekunder för prestandaoptimering.

MedietypFormat som stödsMaximal storlek
BilderJPEG, PNG, GIF, TIFF10 MB per fil
VideoMPEG, MP4, MOV10 MB, upp till 30 sekunder
LjudMP3, AAC, WAV, CAF10 MB

Bilder och animerade GIF

Bilder beskäras och skaleras automatiskt av systemet för visning i kompakt och utökad aviseringsvy. Animerade GIF stöds från och med iOS 12 och spelas automatiskt upp när aviseringen visas. Rekommenderad bildstorlek är 1024x1024 pixlar, vilket säkerställer tydlig visning på alla enheter, inklusive iPad med stor skärm.

Video- och ljudbilagor

Video i Rich Notification spelas som standard upp utan ljud — användaren kan aktivera ljudet via en knapp i spelaren. Maximal videolängd är 30 sekunder, varefter uppspelningen stoppas. Ljudbilagor kan användas för röstmeddelanden eller ljudförhandsvisningar och spelas upp när man trycker på aviseringen i utökad vy.

Interaktiva knappar och åtgärder

Interaktiva åtgärder låter användaren utföra operationer direkt från aviseringen utan att öppna appen. Åtgärder registreras via UNNotificationCategory och UNNotificationAction när appen startas. Varje åtgärd kan vara bakgrund (utan att öppna appen) eller förgrund (öppnar appen för att slutföra operationen).

UNNotificationAction och UNTextInputNotificationAction

UNNotificationAction är en knapp med en titel och valfria modifierare, som requiresAuthentication (kräver Face ID/Touch ID) eller destructive (markerad med rött). UNTextInputNotificationAction utökar denna möjlighet genom att lägga till ett textinmatningsfält — idealiskt för snabbt svar på ett meddelande eller en kommentar. Åtgärder visas vid lång tryckning på aviseringen eller svepning nedåt.

Registrering av kategorier och åtgärder

Aviseringskategorier kopplar samman innehållstypen med den uppsättning tillgängliga åtgärder. Registreringsprocessen utförs i AppDelegate när appen startas via UNUserNotificationCenter.current().setNotificationCategories. Kategorin anges på servern i fältet category i JSON-payload, och systemet tillämpar automatiskt motsvarande åtgärdsuppsättning på aviseringen.

Hantering av klick på åtgärder

När användaren klickar på en knapp eller skickar text, anropar systemet delegaten UNUserNotificationCenterDelegate med metoden didReceive response. UNNotificationResponse innehåller åtgärdens identifierare och den inmatade texten (för UNTextInputNotificationAction). Baserat på denna information utför appen motsvarande affärslogik: skickar ett meddelande, bekräftar åtgärden eller öppnar en specifik skärm.

Implementering av Rich Notification i Swift

Låt oss titta på hela cykeln för att skapa Rich Notification: från registrering av kategorier i AppDelegate till bearbetning i Service Extension och visning. AppDelegate registrerar kategorin med knappar, servern skickar aviseringen med bildens URL, Service Extension laddar ner media och Content Extension visar det anpassade gränssnittet med knappar.

swift
// AppDelegate — registrering av kategorier och åtgärder
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

    let replyAction = UNTextInputNotificationAction(
        identifier: "reply",
        title: "Svara",
        options: [.authenticationRequired])

    let likeAction = UNNotificationAction(
        identifier: "like",
        title: "Gilla",
        options: [])

    let category = UNNotificationCategory(
        identifier: "social_post",
        actions: [replyAction, likeAction],
        intentIdentifiers: [],
        options: [])

    UNUserNotificationCenter.current()
        .setNotificationCategories([category])
    return true
}

Service Extension för nedladdning av bild

Efter mottagande av en push-avisering med kategorin “social_post” och bildens URL i ett anpassat fält aktiveras Service Extension. Tillägget laddar ner bilden över nätverket, skapar en UNNotificationAttachment med en unik identifierare och lägger till den i innehållet. Det är viktigt att kontrollera storleken på den nedladdade filen — om den överstiger 10 MB skapas inte bilagan och systemet visar aviseringen utan media.

swift
class NotificationService: UNNotificationServiceExtension {

    override func didReceive(
        _ request: UNNotificationRequest,
        withContentHandler contentHandler:
        @escaping (UNNotificationContent) -> Void
    ) {
        let content = (request.content.mutableCopy()
            as! UNMutableNotificationContent)
        guard let urlString = content.userInfo["media-url"]
            as? String,
            let url = URL(string: urlString)
        else { contentHandler(request.content); return }

        URLSession.shared.downloadTask(with: url) {
            location, _, _ in
            guard let location = location else {
                contentHandler(content); return }
            let attachment = try! UNNotificationAttachment(
                identifier: "media", url: location,
                options: [UNNotificationAttachmentOptionsTypeHintKey:
                    "jpg"])
            content.attachments = [attachment]
            contentHandler(content)
        }.resume()
    }
}

Testning av Rich Notification

För att testa Rich Notification utan server, använd iOS-simulatorn och skicka push via terminalen med xcrun simctl push. I payload måste du ange mutable-content: 1 för att aktivera Service Extension och category för att visa åtgärder. Kommandot skickar push från en JSON-fil direkt till den valda simulatorn, vilket möjliggör snabb iteration utan att konfigurera serverinfrastruktur.

Content Extension och anpassat gränssnitt

UNNotificationContentExtension gör det möjligt att helt ersätta standardgränssnittet för aviseringen med en valfri UIKit- eller SwiftUI-vy. Tillägget aktiveras när användaren expanderar aviseringen (force touch eller svepning nedåt) och kan innehålla knappar, reglage, animationer och andra UI-komponenter. Gränssnittets storlek anpassas till innehållet med hjälp av Auto Layout.

Storyboard och SwiftUI i Content Extension

Content Extension är baserat på en storyboard med en vy som ärver från UIViewController. SwiftUI View integreras via UIHostingController från och med iOS 16, vilket möjliggör moderna metoder för att bygga gränssnitt. För bakåtkompatibilitet med iOS 14–15 rekommenderas att använda UIKit med xib-filer. Gränssnittet tar emot modifierat innehåll från Service Extension via UNNotificationContent.

Hantering av användaråtgärder

Content Extension implementerar protokollet UNNotificationContentExtension med metoden didReceive response. UNNotificationResponse innehåller information om den tryckta knappen eller inmatad text. Tillägget kan uppdatera gränssnittet utan att stänga aviseringen eller anropa en completion handler för att stänga den. Detta gör det möjligt att skapa snabba interaktionsscenarier, till exempel “gilla” med visuell återkoppling direkt i aviseringen.

Designrekommendationer

Apple rekommenderar att Content Extension är koncist och funktionellt, med undvikande av överflödiga element. Maximal höjd för expanderad avisering är cirka 400 punkter, varefter innehållet rullas. Använd systemets teckensnitt och mellanrum för enhetlighet med andra aviseringar. Testa på olika skärmstorlekar för att säkerställa att gränssnittet visas korrekt både på iPhone och iPad.

Vanliga frågor

Vilken är den maximala bildstorleken i Rich Notification?

Den maximala storleken för en mediabilaga är 10 MB. Om gränsen överskrids skapas inte UNNotificationAttachment och aviseringen visas utan media. Det rekommenderas att optimera bilder till 1–3 MB för snabb nedladdning i Service Extension.

Fungerar Rich Notification på alla iPhone-modeller?

Rich Notification stöds på alla enheter med iOS 10 och senare, inklusive iPhone 5s och nyare. Content Extension med anpassat UI är tillgängligt från iOS 12. SwiftUI i Content Extension — från iOS 16. På äldre versioner visas aviseringen i standardform.

Kan jag använda GIF i Rich Notification?

Ja, animerade GIF stöds från och med iOS 12. GIF laddas ner via UNNotificationAttachment som en vanlig bild och spelas automatiskt upp när aviseringen visas. GIF-storleken är begränsad till samma 10 MB som andra format.

Hur många knappar kan läggas till en avisering?

Maximalt 4 åtgärder per avisering vid registrering av kategori. Om fler finns visar systemet de första 4 och ignorerar resten. Det rekommenderas att använda 2–3 knappar för optimal UX — för många alternativ överbelastar gränssnittet.

Krävs en server för att skicka Rich Notification?

Ja, servern måste skicka push via APNS (Apple Push Notification service) med en JSON-payload som innehåller URL till mediafilen i ett anpassat fält och flaggan mutable-content: 1. Servern specificerar också category för aktivering av Content Extension och åtgärder.

Sammanfattning

  • Rich Notification — iOS-pushavisering med mediabilagor, interaktiva knappar och anpassat UI som ökar användarengagemanget.
  • Media som stöds — JPEG/PNG/GIF-bilder, MP4/MOV-video (upp till 30 s), MP3/AAC/WAV-ljud med gräns på 10 MB per fil.
  • Service Extension laddar ner media från URL i payload och lägger till UNNotificationAttachment i aviseringsinnehållet.
  • Interaktiva åtgärder — upp till 4 knappar per kategori, inklusive textinmatning via UNTextInputNotificationAction.
  • Content Extension ersätter standardgränssnittet med en anpassad UIKit/SwiftUI-vy med valfria element.
  • Content Extension implementerar protokollet UNNotificationContentExtension med metoden didReceive för hantering av klick och realtidsuppdatering av UI.
  • Rich Notification kräver konfiguration på alla nivåer: server (APNS), Service Extension (medianedladdning) och AppDelegate (kategoriregistrering).

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å