Notification Content Extension — lényeg, egyedi UI és beállítás iOS-ben

Szerző: IT Sectr Megjelenés: 2026-06-15 Olvasási idő: 9 perc

Notification Content Extension — az iOS-bővítmény egy típusa, amely a push értesítés szabványos sablonját egy teljesen egyedi felhasználói felületre cseréli. A fejlesztő lehetőséget kap képek, audiolejátszó, műveleti gombok, folyamatjelző sávok és egyedi animáció megjelenítésére az értesítésen belül, kiterjesztve a szabványos bannert egy teljes értékű mini-alkalmazássá. A WWDC 2025 adatai szerint a bővítmény az UNNotificationContentExtension-t használja, és legfeljebb 4 média mellékletet támogat egy értesítésben, valamint az interaktív műveletek feldolgozását az UNNotificationAction segítségével.

Főbb pontok

  • Notification Content Extension egyedi felületet hoz létre a push értesítésekhez a szabványos rendszersablon helyett
  • Az architektúra a UNNotificationContentExtension protokollon alapul a didReceive(_:with:) és didReceive(_:withCompletionHandler:) metódusokkal
  • A bővítmény média mellékleteket — képeket, audiót és videót — jeleníthet meg közvetlenül az értesítésen belül az alkalmazás megnyitása nélkül
  • Az interaktív értesítések egyedi műveleteket támogatnak visszajelzéssel és szövegbevitellel
  • A felület mérete korlátozott — az egyedi értesítés maximális magassága iPhone-on 320 pont, iPaden 352 pont

Mi az a Notification Content Extension

Notification Content Extension — egy alkalmazásbővítmény, amely felülírja a push értesítés megjelenítését iOS-ben. A szabványos banner helyett címmel, üzenettel és gombokkal megjeleníthető egy teljesen az Interface Builder-ben vagy programozottan UIKit-en vagy SwiftUI-n keresztül tervezett felület.

Ellentétben a Notification Service Extension-nel, amely a megjelenítés előtt módosítja a tartalmat, a Content Extension csak a vizuális megjelenítésért felelős. A bővítmény az összes módosítás után kapja meg a kész értesítést, és eldönti, hogyan jelenítse meg. Ez a legfontosabb különbség a két értesítésbővítmény-típus között.

A bővítmény akkor aktiválódik, amikor a felhasználó egy kiterjesztő gesztust hajt végre — lefelé görgeti az értesítést, vagy rákattint (a készülék modelljétől függően). Az iOS elindítja a bővítmény folyamatát, létrehozza a vezérlőt a megadott nib-ből vagy storyboard-ból, és átadja az értesítést a UNNotificationContentExtension segítségével.

Egyedi értesítési felület létrehozása

A fejlesztés egy új target hozzáadásával kezdődik az Xcode-ban a Notification Content Extension sablonnal. Az Xcode létrehozza a MainInterface.storyboard fájlt és egy osztályt, amely a UIViewController-ből származik, megvalósítva az UNNotificationContentExtension protokollt.

A felület mérete és korlátai

Az egyedi terület maximális magassága — 320 pont iPhone-on (a nagy képernyős modelleknél) és 352 pont iPaden. Az e határokon túlnyúló tartalom levágásra kerül. A különböző méretekhez való alkalmazkodáshoz ajánlott az Auto Layout és UIScrollView használata a görgethető tartalomhoz. A szélesség mindig megegyezik az értesítés szélességével, és automatikusan változik a készülék elforgatásakor.

Az Apple Human Interface Guidelines figyelmeztet: az értesítési felület legyen tömör, és csak egy fő elemet tartalmazzon — képet, lejátszót, térképet vagy gyorsbeviteli űrlapot. A több interaktív elem túlterheli a felhasználót és megnehezíti az interakciót.

Kommunikáció a fő alkalmazással

App Group — az egyetlen adatcsere-mechanizmus a bővítmény és a fő alkalmazás között. Az App Group megosztott könyvtárán keresztül gyorsítótárazott képek, tokenek és beállítások továbbíthatók. A fő alkalmazás API-jának közvetlen hívásai vagy a UserDefaults-hoz való hozzáférés a folyamatok elkülönítése miatt nem elérhetők.

swift
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 protokoll

UNNotificationContentExtension — a fő protokoll, amely meghatározza az egyedi értesítés életciklusát. A protokoll metódusokat biztosít a tartalom fogadásához, a műveletek feldolgozásához és a felület kezeléséhez.

didReceive:with: metódus

didReceive(_:with:) az értesítés fogadásakor hívódik meg. A bővítmény egy UNNotification objektumot és UNNotificationContentExtensionMediaPlayPauseButtonType-ot kap a médialejátszó kezeléséhez. Ebben a metódusban kell konfigurálni a felületet — betölteni a képet, inicializálni a lejátszót vagy megjeleníteni az adatokat. A rendszer ezt a metódust minden alkalommal meghívja, amikor az értesítés valós időben frissül.

Fontos figyelembe venni, hogy a bővítmény korlátozott idővel rendelkezik a végrehajtáshoz — körülbelül 30 másodperc egy teljes megjelenítési ciklushoz. Ha a felület nem készül el ezen idő alatt, az iOS egy rendszerértesítést jelenít meg. Nehéz erőforrásokhoz — képek betöltése a hálózatról, videó dekódolása — aszinkron műveletek használata javasolt előzetes gyorsítótárazással az App Group segítségével.

Médialejátszó kezelése

A protokoll opcionális metódusokat tartalmaz a play/pause gombokhoz: mediaPlay, mediaPause és mediaPlayPauseButtonType. Ha az értesítés audio- vagy videotartalmat tartalmaz, a bővítmény megjeleníthet egy beépített lejátszót rendszervezérlő elemmel. Az iOS automatikusan hozzáad egy lejátszás gombot a bővítmény jobb felső sarkához, amikor a megfelelő gombtípust adja vissza.

Média mellékletek és feldolgozásuk

UNNotificationAttachment — az objektum, amely az értesítéshez csatolt médiaadatokat tartalmazza. Képek, audiofájlok és videók az értesítés létrehozásának szakaszában kerülnek hozzáadásra a szerveren vagy a Notification Service Extension-ben az UNNotificationAttachment segítségével.

Támogatott formátumok

Képekhez: JPEG, PNG, GIF, HEIF. Audiohoz: MP3, AAC, ALAC, WAV. Videóhoz: MPEG-4, H.264, HEVC. Az egyes mellékletek maximális mérete — 50 MB, legfeljebb 4 melléklet értesítésenként. A rendszer automatikusan letölti a mellékleteket a háttérben az értesítés megjelenítése előtt, és hozzáférést biztosít a bővítmény számára a helyi URL-ekhez security-scoped erőforrásokon keresztül.

Az Apple szerint a bővítmény nem töltheti le önállóan a médiát — az UNNotificationAttachment már tartalmazza a helyi URL-t a rendszer általi letöltés befejezése után. Ha azonban a melléklet nem töltődött le időben (például gyenge kapcsolat esetén), a bővítmény megjeleníthet egy helyőrzőt vagy alternatív szöveget.

Munka security-scoped erőforrásokkal

Minden UNNotificationAttachment egy security-scoped URL-t biztosít, amelyhez a bővítménynek a startAccessingSecurityScopedResource() segítségével kell hozzáférnie, és a stopAccessingSecurityScopedResource() segítségével kell felszabadítania. Ezeket a metódusokat párban kell meghívni — ellenkező esetben az erőforrás nem szabadul fel, és hozzáférési jogosultság szivárgást okoz.

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

Interaktív értesítések és műveletek

Notification Content Extension támogatja az egyedi interaktív műveleteket — gombokat, amelyek az értesítés tartalma alatt jelennek meg. A műveletek az értesítési kategória létrehozásakor kerülnek regisztrálásra az UNNotificationCategory segítségével, és lehetnek destruktívak, szövegesek vagy háttérben futók.

Művelettípusok

UNNotificationAction — egy egyszerű művelet címmel és opcionális destruktív flag-gel. UNTextInputNotificationAction — egy művelet szövegbeviteli mezővel, például gyors válaszhoz egy üzenetre. Mindkét típus támogatja az UNNotificationActionOptions.authenticationRequired opciót — a készülék feloldásának követelményét a végrehajtás előtt.

A bővítmény a kiválasztott műveletet a didReceive(_:withCompletionHandler:) metóduson keresztül kapja, ahol egy UNNotificationResponse objektum kerül átadásra a művelet azonosítójával és opcionális szöveggel. A bővítmény feldolgozhatja a választ önállóan, vagy továbbíthatja a fő alkalmazásnak az App Group megosztott tárolóján keresztül.

swift
let category = UNNotificationCategory(
    identifier: "message",
    actions: [
        UNTextInputNotificationAction(
            identifier: "reply",
            title: "Reply",
            options: .authenticationRequired
        ),
        UNNotificationAction(
            identifier: "mark_read",
            title: "Mark Read",
            options: .foreground
        )
    ],
    intentIdentifiers: []
)

Gyakran ismételt kérdések

Mi a különbség a Notification Content Extension és a Service Extension között?

A Content Extension az értesítés vizuális megjelenítéséért felelős, míg a Service Extension a tartalom megjelenítés előtti módosításáért. A Content Extension a Service Extension után működik, és nem tudja megváltoztatni az értesítés payload-ját.

Milyen programozási nyelvek támogatottak?

Swift és Objective-C az UIKit-hez. iOS 16-tól kezdve a SwiftUI is támogatott az értesítési felület létrehozásához a NotificationContentView segítségével, méret- és konfigurációs módosítókkal.

Használható a SwiftUI a Notification Content Extension-ben?

Igen, iOS 16-tól a bővítmény használhatja a SwiftUI-t az UIHostingController-en keresztül. Az UIKit összes kompetenciája — méret, korlátozások, security-scoped erőforrások — azonban megmarad, és alkalmazásra kerül a SwiftUI-tartalomra is.

Hány média melléklet csatolható egy értesítéshez?

Legfeljebb 4 melléklet értesítésenként. Minden melléklet legfeljebb 50 MB méretű. Támogatottak a képek (JPEG, PNG, HEIF), audió (MP3, AAC) és videó (MPEG-4, H.264).

Hogyan lehet adatokat átvinni a bővítményből a fő alkalmazásba?

Az App Group segítségével — egy megosztott könyvtáron keresztül a lemezen. Az app group utótaggal ellátott UserDefaults szintén működik. A fő alkalmazás API-jának közvetlen hívásai nem elérhetők a bővítmény folyamatainak elkülönítése miatt.

Összefoglalás

  • Notification Content Extension a szabványos értesítési felületet egyedire cseréli bármilyen vizuális elemmel
  • Az architektúra a UNNotificationContentExtension protokollt használja a didReceive metódusokkal a felület frissítéséhez
  • UNNotificationAttachment média mellékleteket biztosít automatikus háttérletöltéssel és security-scoped hozzáféréssel
  • Az interaktív műveletek támogatják a szövegbevitelt és a destruktív műveleteket a UNNotificationAction segítségével
  • A felület maximális magassága — 320 pont iPhone-on, a tartalom adaptálásához UIScrollView javasolt
  • Adatcsere a fő alkalmazással — csak App Group és megosztott könyvtáron keresztül a lemezen

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is