Notification Content Extension — mi ez, hogyan készítsünk egyedi felületet iOS-hez

Szerző: IT Sectr Megjelenés: 2026-03-21 Olvasási idő: 8 perc

Notification Content Extension — egy iOS-bővítmény, amely lehetővé teszi a push-értesítés szabványos felületének lecserélését egy egyedi UIView-re. A fejlesztő teljes irányítást kap a tartalom megjelenítése felett: képek, videók, animációk, egyedi betűtípusok és interaktív elemek. A Apple Developer, 2025 szerint a Notification Content Extension bármilyen UIKit-felületet támogat az értesítés korlátozott helyén.

Főbb pontok

  • Notification Content Extension — iOS-bővítmény a push-értesítések egyedi UI-jához.
  • A bővítmény implementálja a UNNotificationContentExtension protokollt a kötelező didReceive metódussal.
  • Az egyedi felület Storyboard-ban készül, és bármilyen UIKit-komponenst tartalmazhat.
  • A bővítmény maximális mérete — 50 MB, és nem haladhatja meg a 12 MB-ot tömörített formában.
  • A bővítmény a megadott categoryIdentifier-rel rendelkező értesítésekhez aktiválódik.

Mi az a Notification Content Extension

Notification Content Extension — egy alkalmazásbővítmény iOS-ben, amely felülírja a push-értesítés szabványos megjelenítési sablonját egy egyedi UIView-val. Ellentétben a szokásos értesítéssel, ahol a tartalom a címre, alcímre és szövegtörzsre korlátozódik, a bővítmény lehetővé teszi bármilyen UIKit-felület megjelenítését: térkép koordinátákkal, grafikon, képgaléria vagy beviteli űrlap.

Hogyan működik

Amikor az iOS egy push-értesítést kap a megadott categoryIdentifier-rel, a rendszer ellenőrzi, hogy a bővítmény regisztrálva van-e ehhez a kategóriához. Ha igen — a rendszer elindítja a bővítményt egy külön folyamatban, és átadja neki az értesítés tartalmát. A bővítmény a saját felületét jeleníti meg a szabványos helyett. A felhasználó anélkül lép kapcsolatba az egyedi felülettel, hogy megnyitná a fő alkalmazást.

Különbség a Notification Service Extension-től

Fontos, hogy ne keverjük össze a Notification Content Extension-t a Notification Service Extension-nel. A Service Extension az értesítés megjelenítése előtt dolgozza fel a tartalmat (mellékletek letöltése, visszafejtés). A Content Extension a kész tartalom kézhezvétele után cseréli le a felületet. Mindkét bővítmény együttműködhet: a Service Extension előkészíti az adatokat, a Content Extension megjeleníti azokat.

JellemzőContent ExtensionService Extension
CélEgyedi értesítési UITartalom módosítása megjelenítés előtt
Végrehajtási időAmíg a felhasználó látja az értesítéstAkár 30 másodperc a háttérben
FelületTeljes UIKit UIViewNincs felület
APIUNNotificationContentExtensionUNNotificationServiceExtension

A bővítmény korlátozásai

A Notification Content Extension izolált folyamatban működik korlátozott erőforrásokkal. A bővítmény nem fér hozzá az alkalmazás fő tárolójához NSUserDefaults-on keresztül, kivéve az App Group-ot. A bővítmény mérete 50 MB-ra korlátozódik kicsomagolt formában. A tartalom megjelenítésének ideje is korlátozott — ha a bővítmény nem fejezi be a frissítést ésszerű időn belül, a rendszer bezárja.

Notification Content Extension létrehozása Xcode-ban

A bővítmény Xcode-ban történő létrehozásához hozzá kell adni egy új Notification Content Extension típusú target-et. Az Xcode automatikusan létrehozza a MainInterface.storyboard-ot egy vezérlővel, amely az UIViewController-ből származik és implementálja az UNNotificationContentExtension-t.

A target-bővítmény hozzáadása

Az Xcode-ban válassza a File → New → Target → Notification Content Extension lehetőséget. Adja meg a bővítmény nevét, nyelvét (Swift vagy Objective-C) és győződjön meg arról, hogy a projekt ugyanahhoz a fejlesztői csapathoz csatlakozik. A target létrehozása után megjelenik egy mappa három fájllal: MainInterface.storyboard, Info.plist és a vezérlő fájlja.

Info.plist beállítása

A bővítmény Info.plist fájljában kötelezően meg kell adni az NSExtensionAttributes tömböt az UNNotificationExtensionCategory kulccsal. Ez a tömb tartalmazza azoknak az értesítési kategóriáknak az azonosítóit, amelyekhez a bővítmény aktiválódik. Az opcionális UNNotificationExtensionInitialContentSizeRatio kulcs megadja az egyedi felület kezdeti képarányát a helyes pozicionáláshoz.

A bővítmény mappaszerkezete

Ajánlott tiszta architektúrát fenntartani a target-bővítményben: külön mappa a vezérlőknek, külön az egyedi nézeteknek. Mivel a bővítmény egy külön bináris fájl, a fő alkalmazás kódja nem érhető el közvetlenül. A kód megosztásához hozzon létre egy külön framework-öt vagy használjon App Group-ot az adatokhoz.

Az UNNotificationContentExtension protokoll implementálása

UNNotificationContentExtension — egy protokoll, amelyet a vezérlőnek a Notification Content Extension-ben implementálnia kell. Az egyetlen kötelező metódus a didReceive(_:with:), amelyet az értesítés fogadásakor hívnak meg. A vezérlő megkapja az értesítést és egy kész view controller-t, amelyet frissíteni kell az adatokkal.

A vezérlő alap implementációja

A bővítmény vezérlőjének az UIViewController-ből kell származnia és implementálnia kell az UNNotificationContentExtension-t. A Storyboard vagy xib ehhez a vezérlőhöz van kapcsolva. Az értesítés fogadásakor a didReceive metódus átadja a tartalmat, és a vezérlő frissíti a nézeteit.

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

A felület méretének kezelése

A rendszer meghatározza az egyedi felület méretét az Info.plist-ben lévő UNNotificationExtensionInitialContentSizeRatio kulcs és az aktuális tartalom alapján. Javasolt ezt a kulcsot 0.1 értékre állítani a minimális kezdeti mérethez, majd a méretet a preferredContentSize-on keresztül módosítani a tartalom betöltése után.

Felület testreszabása és interaktivitás

Notification Content Extension teljes szabadságot ad a felület létrehozásában. Bármilyen UIKit-komponens használható: UITableView, MKMapView, WKWebView, UIStackView. Azonban figyelembe kell venni az értesítés korlátozott helyét és optimalizálni kell a teljesítményt.

Térkép hozzáadása az értesítéshez

Az egyik népszerű forgatókönyv a térkép megjelenítése a helyszínnel. Ehhez a bővítmény Storyboard-jához hozzáadunk egy MKMapView-t, és a vezérlő átadja a koordinátákat az értesítés tartalmából. Fontos, hogy ne felejtse el hozzáadni a MapKit-et a bővítmény target-jéhez. A térkép használatakor vegye figyelembe a bővítmény memóriakorlátját — az összetett csempék betöltése meghaladhatja a rendelkezésre álló erőforrásokat.

Animációk és átmenetek

A Notification Content Extension támogatja az UIView-animációkat, beleértve a méretváltoztatást, mozgatást és az elemek átlátszóságát. Az értesítés kibővített módjába lépve elindítható a tartalom megjelenésének animációja. Az animációknak rövidnek kell lenniük (0.5 másodpercig) és nem zavarhatják a felhasználót az értesítéssel való interakcióban. Kerülje a végtelen animációkat — ezek fogyasztják az akkumulátort és csökkentik a teljesítményt.

Érintések kezelése az egyedi felületen

Mivel a bővítmény egy teljes értékű UIViewController, gesztusokat és érintéskezelőket adhat hozzá. Az UIKit gesztusok (UITapGestureRecognizer, UIButton) szabványosan működnek. Az alkalmazás megnyitását igénylő műveletekhez használja a bővítmény delegáltját vagy a userNotificationCenter-t. Az interaktív elemeknek elég nagyoknak kell lenniük a kényelmes érintéshez a korlátozott helyen — a minimális érintési célpont mérete 44x44 pont az Apple ajánlásai szerint.

Munka médiával és mellékletekkel

Multimédiás tartalom — a Notification Content Extension kulcsfontosságú képessége. Az értesítés tartalmazhat képeket, GIF-eket, audiót és videót, amelyek az egyedi felületen jelennek meg. A mellékletek az UNNotificationAttachment-en keresztül érkeznek, amelyet hozzáadhat a szerver a payload-on keresztül, valamint a Notification Service Extension a letöltés után. Támogatott formátumok: JPEG, PNG, MPEG-4 és MP3.

Média megjelenítése a bővítményben

Egy kép megjelenítéséhez elegendő az UNNotificationAttachment beszerzése az értesítés tartalmából és betöltése egy helyi URL-ről. Fontos megjegyezni, hogy a bővítmény csak helyi fájlokhoz fér hozzá — a távoli erőforrásokat előzetesen a Service Extension-nek kell letöltenie. A melléklet maximális mérete — 50 MB iOS 15+-on, a korlátozás minden egyes frissítéssel növekszik. Több kép támogatásához használjon UNNotificationAttachment-et különböző azonosítókkal, és jelenítse meg őket a UIPageViewController-en keresztül.

Képek betöltése és megjelenítése

Egy kép megjelenítéséhez az egyedi felületen a bővítmény lekéri az UNNotificationAttachment-et az értesítés tartalmából és betölti egy helyi URL-ről. A mellékletet előzetesen a Notification Service Extension-nek kell letöltenie — a Content Extension nem fér hozzá a hálózathoz. A média melléklet maximális mérete — 50 MB iOS 15+-on, korábbi verziókban a korlátozás 10 MB volt. A bővítménynek megfelelően kell kezelnie a melléklet hiányát és egy fallback-felületet kell megjelenítenie. Az alacsony felbontású képek előzetes betöltéséhez használjon a Service Extension által a csatolás előtt létrehozott miniatűr verziókat.

Videó lejátszása az értesítésben

Az iOS támogatja a videó lejátszását a Notification Content Extension-ben az AVPlayerLayer-en keresztül. A bővítmény megjeleníthet egy videólejátszót vezérlő gombokkal közvetlenül az értesítésben. Ez különösen hasznos a videómegfigyelő, streamelő vagy tartalom-előnézeti alkalmazások számára. Az automatikus lejátszás hang nélkül megengedett, feltéve, hogy a felhasználó multimédiás tartalomra számít ebben az értesítésben. A videólejátszó implementálásakor adjon hozzá vezérlőelemeket: play/pause, folyamatjelző sáv és bezáró gomb. Győződjön meg arról, hogy a videó nem indul automatikusan hanggal — ez megsérti az Apple felhasználói élményre vonatkozó ajánlásait. Több képből álló diavetítéshez használjon animált átmenetet közöttük a UIView.transition-en keresztül az oldallapozási átmenet opcióval.

A bővítmény teljesítményének optimalizálása

A Notification Content Extension korlátozott környezetben működik, körülbelül 50 MB memóriakorláttal. A teljesítmény optimalizálásához használja a képek lusta betöltését, kerülje a nehéz számításokat a fő szálon és alkalmazza az Auto Layout-ot egyszerű megszorításokkal. A nehéz műveleteket, mint a képfeldolgozás vagy adatfeldolgozás, végezze háttérszálakon (DispatchQueue.global). A memóriakorlát túllépése esetén a rendszer bezárja a bővítményt, és a felhasználó a szabványos értesítést fogja látni. Javasolt a bővítmény profilozása az Instruments (Allocations és Time Profiler) segítségével a közzététel előtt, valamint a memóriahasználat ellenőrzése valós eszközökön különböző iOS-verziókkal.

Gyakran ismételt kérdések

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

Igen, iOS 16-tól kezdve a Notification Content Extension támogatja a SwiftUI-t az UIHostingController-en keresztül. Az UIKit azonban stabilabb választás marad az összetett felületekhez a SwiftUI korlátozott bővítménytámogatása miatt.

Miért nem aktiválódik a bővítmény az értesítésemhez?

Ellenőrizze, hogy az értesítés payload-jában lévő categoryIdentifier megegyezik-e a bővítmény Info.plist fájljában lévő UNNotificationExtensionCategory-val. Győződjön meg arról is, hogy a bővítmény hozzá van adva a fő alkalmazás target-jéhez és megfelelően alá van írva.

Hogyan továbbítsunk adatokat a fő alkalmazásból a bővítménybe?

Használjon App Group-ot — megosztott tárolót (UserDefaults suite) vagy fájlkonténert. A fő alkalmazásnak és a bővítménynek ugyanabban a fejlesztői csoportban kell lennie, és az App Groups képességnek engedélyezve kell lennie.

Hogyan frissíthető a bővítmény tartalma új értesítés nélkül?

Használja a didReceive(_:with:) metódust UNNotificationContentExtensionMediaPlayPauseButtonType-pal a média vezérléséhez, vagy kérjen frissítést a delegálton keresztül. A tartalom teljes frissítése új értesítés nélkül nem lehetséges.

Hogyan lehet hibakeresni a Notification Content Extension-t?

Válassza ki a bővítmény target-jét az Xcode-ban és futtassa a szimulátoron. Használja az lldb-t és a breakpoint-okat, mint egy szokásos alkalmazásban. Teszteléshez küldjön push-értesítést a Firebase Console-on keresztül vagy lokálisan a Pusher-en keresztül.

Összefoglalás

  • Notification Content Extension — iOS-bővítmény a push-értesítések egyedi megjelenítéséhez.
  • A bővítmény implementálja a UNNotificationContentExtension-t és teljes UIKit-felületet biztosít.
  • A megfelelő categoryIdentifier-rel rendelkező értesítésekhez aktiválódik.
  • Támogat bármilyen UI-komponenst: térképek, képek, videók, animációk.
  • Izolált folyamatban működik, App Group-on keresztüli hozzáféréssel.
  • Méretkorlátozás — 50 MB kicsomagolt bővítmény esetén.
  • A médiatartalomhoz használja a Service Extension által előkészített UNNotificationAttachment-et.

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