Rich Notification: co to je, multimediální obsah a vytváření oznámení

Autor: IT Sectr Publikováno: 2026-03-20 Doba čtení: 8 min

Rich Notification je rozšířený formát push oznámení iOS, který zahrnuje mediální přílohy, interaktivní tlačítka a vlastní rozhraní pro zlepšení uživatelského zážitku. Na rozdíl od standardních textových oznámení může Rich Notification zobrazovat obrázky, videa a audio přímo v banneru nebo na uzamčené obrazovce. Podle Apple Developer Documentation, 2026 podporuje UNNotificationAttachment až 10 souborů v jednom oznámení a automaticky je škáluje pro optimální zobrazení na všech zařízeních.

Hlavní body

  • Mediální přílohy — Rich Notification podporuje obrázky (JPEG, PNG, GIF), video (MP4, MOV až 30 sekund) a audio (MP3, AAC, WAV) přes UNNotificationAttachment.
  • Interaktivita — tlačítka a textový vstup se přidávají přes UNNotificationAction a UNTextInputNotificationAction, připojené ke kategoriím oznámení.
  • Service Extension — povinná komponenta pro stahování médií: stahuje přílohu z URL v payloadu a přidává ji do obsahu.
  • Content Extension — vytváří zcela vlastní rozhraní oznámení s libovolným UI, animacemi a zpracováním gest.
  • Limity — maximální velikost přílohy 10 MB, limit paměti rozšíření 50 MB, doba zpracování až 30 sekund.

Co je Rich Notification

Rich Notification je push oznámení iOS, které obsahuje nejen text, ale také mediální přílohy, interaktivní prvky a přizpůsobené rozhraní. Termín „rich“ (bohatý) odráží možnost zahrnout do oznámení obrázky, video, audio, tlačítka akcí a textový vstup, což mění jednoduché upozornění na plnohodnotný interaktivní prvek.

Vývoj oznámení v iOS

Apple zavedl podporu pro Rich Notification v iOS 10 spolu s frameworkem UserNotifications. Před tím mohla push oznámení obsahovat pouze text, zvuk a badge. iOS 10 představil UNNotificationServiceExtension a UNNotificationContentExtension, které otevřely možnost modifikace obsahu a vytváření vlastních rozhraní. V pozdějších verzích byla přidána podpora pro SwiftUI v Content Extension, animované GIFy a vylepšené škálování médií.

Výhody oproti standardním oznámením

Rich Notification výrazně zvyšuje zapojení uživatelů. Výzkumy Apple ukazují, že oznámení s obrázky získávají o 30–40 % více interakcí ve srovnání s textovými. Obrázek produktu, náhled videa nebo tlačítko rychlé odpovědi umožňují uživateli učinit rozhodnutí přímo z oznámení bez otevření aplikace. To zkracuje cestu k cílové akci a zlepšuje uživatelský zážitek.

Typy mediálních příloh a jejich formáty

UNNotificationAttachment podporuje tři kategorie médií: obrázky, video a audio. Každý typ má svá vlastní omezení formátu, velikosti a délky. Systém automaticky škáluje obrázky na velikost oznámení a omezuje délku videa na 30 sekund pro optimalizaci výkonu.

Typ médiaPodporované formátyMaximální velikost
ObrázkyJPEG, PNG, GIF, TIFF10 MB na soubor
VideoMPEG, MP4, MOV10 MB, až 30 sekund
AudioMP3, AAC, WAV, CAF10 MB

Obrázky a animované GIFy

Obrázky jsou automaticky ořezávány a škálovány systémem pro zobrazení v kompaktním a rozšířeném pohledu oznámení. Animované GIFy jsou podporovány od iOS 12 a přehrávají se automaticky při prohlížení oznámení. Doporučená velikost obrázku je 1024x1024 pixelů, což zajišťuje ostré zobrazení na všech zařízeních včetně iPadu s velkou obrazovkou.

Video a audio přílohy

Video v Rich Notification se přehrává ve výchozím nastavení bez zvuku — uživatel může zapnout zvuk pomocí tlačítka v přehrávači. Maximální délka videa je 30 sekund, po které se přehrávání zastaví. Audio přílohy lze použít pro hlasové zprávy nebo zvukové náhledy a přehrávají se při klepnutí na oznámení v rozšířeném pohledu.

Interaktivní tlačítka a akce

Interaktivní akce umožňují uživateli provádět operace přímo z oznámení bez otevření aplikace. Akce se registrují prostřednictvím UNNotificationCategory a UNNotificationAction při spuštění aplikace. Každá akce může být na pozadí (bez otevření aplikace) nebo v popředí (otevře aplikaci pro dokončení operace).

UNNotificationAction a UNTextInputNotificationAction

UNNotificationAction představuje tlačítko s názvem a volitelnými modifikátory, jako je requiresAuthentication (vyžaduje Face ID/Touch ID) nebo destructive (zvýrazněno červeně). UNTextInputNotificationAction rozšiřuje tuto možnost přidáním textového pole pro vstup — ideální pro rychlou odpověď na zprávu nebo komentář. Akce se zobrazí při dlouhém stisknutí oznámení nebo přejetí dolů.

Registrace kategorií a akcí

Kategorie oznámení spojují typ obsahu se sadou dostupných akcí. Proces registrace se provádí v AppDelegate při spuštění aplikace přes UNUserNotificationCenter.current().setNotificationCategories. Kategorie je specifikována na serveru v poli category JSON payloadu a systém automaticky aplikuje odpovídající sadu akcí na oznámení.

Zpracování kliknutí na akce

Když uživatel klikne na tlačítko nebo odešle text, systém zavolá delegáta UNUserNotificationCenterDelegate s metodou didReceive response. UNNotificationResponse obsahuje identifikátor akce a zadaný text (pro UNTextInputNotificationAction). Na základě těchto informací aplikace provede odpovídající obchodní logiku: odešle zprávu, potvrdí akci nebo otevře určitou obrazovku.

Implementace Rich Notification ve Swift

Podívejme se na celý cyklus vytváření Rich Notification: od registrace kategorií v AppDelegate po zpracování v Service Extension a zobrazení. AppDelegate registruje kategorii s tlačítky, server odešle oznámení s URL obrázku, Service Extension stáhne média a Content Extension zobrazí vlastní rozhraní s tlačítky.

swift
// AppDelegate — registrace kategorií a akcí
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

    let replyAction = UNTextInputNotificationAction(
        identifier: "reply",
        title: "Odpovědět",
        options: [.authenticationRequired])

    let likeAction = UNNotificationAction(
        identifier: "like",
        title: "Líbí se",
        options: [])

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

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

Service Extension pro stažení obrázku

Po přijetí push oznámení s kategorií „social_post“ a URL obrázku ve vlastním poli se aktivuje Service Extension. Rozšíření stáhne obrázek po síti, vytvoří UNNotificationAttachment s jedinečným identifikátorem a přidá jej do obsahu. Je důležité zkontrolovat velikost staženého souboru — pokud přesahuje 10 MB, příloha se nevytvoří a systém zobrazí oznámení bez médií.

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

Testování Rich Notification

Pro testování Rich Notification bez serveru použijte iOS simulátor a odešlete push přes terminál pomocí xcrun simctl push. V payloadu povinně uveďte mutable-content: 1 pro aktivaci Service Extension a category pro zobrazení akcí. Příkaz odešle push z JSON souboru přímo na vybraný simulátor, což umožňuje rychlou iteraci bez nastavování serverové infrastruktury.

Content Extension a vlastní rozhraní

UNNotificationContentExtension umožňuje zcela nahradit standardní rozhraní oznámení libovolným UIKit nebo SwiftUI view. Rozšíření se aktivuje, když uživatel rozbalí oznámení (force touch nebo přejetí dolů) a může obsahovat tlačítka, posuvníky, animace a další UI komponenty. Velikost rozhraní se přizpůsobuje obsahu pomocí Auto Layout.

Storyboard a SwiftUI v Content Extension

Content Extension je založen na storyboard s view, které dědí z UIViewController. SwiftUI View je integrováno přes UIHostingController od iOS 16, což umožňuje použití moderních přístupů k budování rozhraní. Pro zpětnou kompatibilitu s iOS 14–15 se doporučuje používat UIKit s xib soubory. Rozhraní přijímá upravený obsah od Service Extension přes UNNotificationContent.

Zpracování uživatelských akcí

Content Extension implementuje protokol UNNotificationContentExtension s metodou didReceive response. UNNotificationResponse obsahuje informace o stisknutém tlačítku nebo zadaném textu. Rozšíření může aktualizovat rozhraní bez zavření oznámení nebo zavolat completion handler pro jeho zavření. To umožňuje vytvářet scénáře rychlé interakce, například „like“ s vizuální zpětnou vazbou přímo v oznámení.

Doporučení pro design

Apple doporučuje, aby Content Extension byl stručný a funkční, s vynecháním nadbytečných prvků. Maximální výška rozbaleného oznámení je přibližně 400 bodů, po které se obsah posouvá. Používejte systémová písma a odsazení pro jednotnost s ostatními oznámeními. Testujte na různých velikostech obrazovky, abyste zajistili správné zobrazení rozhraní na iPhonu i iPadu.

Často kladené otázky

Jaká je maximální velikost obrázku v Rich Notification?

Maximální velikost jedné mediální přílohy je 10 MB. Při překročení limitu se UNNotificationAttachment nevytvoří a oznámení se zobrazí bez médií. Doporučuje se optimalizovat obrázky na 1–3 MB pro rychlé stažení v Service Extension.

Funguje Rich Notification na všech modelech iPhone?

Rich Notification je podporováno na všech zařízeních s iOS 10 a vyšším, včetně iPhone 5s a novějších. Content Extension s vlastním UI je k dispozici od iOS 12. SwiftUI v Content Extension — od iOS 16. Na starších verzích se oznámení zobrazí ve standardní podobě.

Lze použít GIF v Rich Notification?

Ano, animované GIFy jsou podporovány od iOS 12. GIF se stahuje přes UNNotificationAttachment jako běžný obrázek a automaticky se přehrává při prohlížení oznámení. Velikost GIFu je omezena na stejných 10 MB jako ostatní formáty.

Kolik tlačítek lze přidat k oznámení?

Maximálně 4 akce na oznámení při registraci kategorie. Při větším počtu systém zobrazí první 4 a zbytek ignoruje. Doporučuje se používat 2–3 tlačítka pro optimální UX — příliš mnoho možností přetěžuje rozhraní.

Je potřeba server pro odesílání Rich Notification?

Ano, server musí odesílat push přes APNS (Apple Push Notification service) s JSON payloadem obsahujícím URL mediálního souboru ve vlastním poli a příznakem mutable-content: 1. Server také specifikuje category pro aktivaci Content Extension a akcí.

Shrnutí

  • Rich Notification — push oznámení iOS s mediálními přílohami, interaktivními tlačítky a vlastním UI, zvyšující zapojení uživatelů.
  • Podporovaná média — obrázky JPEG/PNG/GIF, video MP4/MOV (až 30 s), audio MP3/AAC/WAV s limitem 10 MB na soubor.
  • Service Extension stahuje média z URL v payloadu a přidává UNNotificationAttachment do obsahu oznámení.
  • Interaktivní akce — až 4 tlačítka na kategorii, včetně textového vstupu přes UNTextInputNotificationAction.
  • Content Extension nahrazuje standardní rozhraní vlastním UIKit/SwiftUI view s libovolnými prvky.
  • Content Extension implementuje protokol UNNotificationContentExtension s metodou didReceive pro zpracování kliknutí a aktualizaci UI v reálném čase.
  • Rich Notification vyžaduje konfiguraci na všech úrovních: server (APNS), Service Extension (stahování médií) a AppDelegate (registrace kategorií).

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také