Notification Content Extension — ano ito, paano gumawa ng custom na interface para sa iOS

May-akda: IT Sectr Nai-publish: 2026-03-21 Oras ng pagbabasa: 8 min

Notification Content Extension — ay isang iOS extension na nagbibigay-daan sa iyo na palitan ang standard na interface ng push notification ng isang custom na UIView. Ang developer ay nakakakuha ng buong kontrol sa pagpapakita ng nilalaman: mga larawan, video, animation, custom na font at interactive na elemento. Ayon sa Apple Developer, 2025, ang Notification Content Extension ay sumusuporta sa anumang UIKit interface sa limitadong espasyo ng notipikasyon.

Mga pangunahing punto

  • Notification Content Extension — iOS extension para sa custom na UI ng push notification.
  • Ang extension ay nagpapatupad ng UNNotificationContentExtension protocol na may mandatoryong didReceive method.
  • Ang custom na interface ay ginagawa sa Storyboard at maaaring maglaman ng anumang UIKit component.
  • Maximum na laki ng extension — 50 MB at hindi dapat lumagpas sa 12 MB sa naka-compress na anyo.
  • Ang extension ay na-activate para sa mga notification na may tinukoy na categoryIdentifier.

Ano ang Notification Content Extension

Notification Content Extension — ay isang app extension sa iOS na nag-o-override sa standard na template ng pagpapakita ng push notification ng isang custom na UIView. Hindi tulad ng ordinaryong notification kung saan ang nilalaman ay limitado sa pamagat, sub-title at katawan, ang extension ay nagbibigay-daan sa pagpapakita ng anumang UIKit interface: mapa na may coordinates, graph, gallery ng mga larawan o input form.

Paano ito gumagana

Kapag ang iOS ay nakatanggap ng push notification na may tinukoy na categoryIdentifier, sinusuri ng system kung ang extension ay nakarehistro para sa kategoryang ito. Kung oo — inilulunsad ng system ang extension sa isang hiwalay na proseso at ipinapadala dito ang nilalaman ng notification. Ang extension ay nagpapakita ng sarili nitong interface sa halip na standard. Ang user ay nakikipag-ugnayan sa custom na interface nang hindi binubuksan ang pangunahing application.

Pagkakaiba sa Notification Service Extension

Mahalagang huwag malito ang Notification Content Extension sa Notification Service Extension. Ang Service Extension ay nagpoproseso ng nilalaman bago ipakita ang notification (pag-download ng mga attachment, pag-decrypt). Ang Content Extension ay pinapalitan ang interface pagkatapos matanggap ang handa na nilalaman. Ang parehong extension ay maaaring magtrabaho nang magkasama: ang Service Extension ay naghahanda ng data, ang Content Extension ay nagpapakita nito.

KatangianContent ExtensionService Extension
LayuninCustom na UI ng notificationPagbabago ng nilalaman bago ipakita
Oras ng pagpapatupadHabang nakikita ng user ang notificationHanggang 30 segundo sa background
InterfaceBuong UIKit UIViewWalang interface
APIUNNotificationContentExtensionUNNotificationServiceExtension

Mga limitasyon ng extension

Ang Notification Content Extension ay gumagana sa isang isolated na proseso na may limitadong resources. Ang extension ay walang access sa pangunahing storage ng application sa pamamagitan ng NSUserDefaults, maliban sa App Group. Ang laki ng extension ay limitado sa 50 MB sa naka-unpack na anyo. Ang oras para sa pagpapakita ng nilalaman ay limitado rin — kung hindi natapos ng extension ang pag-update sa makatwirang oras, isasara ito ng system.

Paggawa ng Notification Content Extension sa Xcode

Upang gawin ang extension sa Xcode, kailangan mong magdagdag ng bagong target ng uri Notification Content Extension. Awtomatikong gagawa ang Xcode ng MainInterface.storyboard na may controller na nagmamana ng UIViewController at nagpapatupad ng UNNotificationContentExtension.

Pagdaragdag ng target-extension

Sa Xcode piliin ang File → New → Target → Notification Content Extension. Tukuyin ang pangalan ng extension, wika (Swift o Objective-C) at tiyakin na ang proyekto ay konektado sa parehong team ng developer. Pagkatapos gawin ang target, lilitaw ang isang folder na may tatlong file: MainInterface.storyboard, Info.plist at file ng controller.

Pag-configure ng Info.plist

Sa Info.plist ng extension, dapat na tinukoy ang array NSExtensionAttributes na may key na UNNotificationExtensionCategory. Ang array na ito ay naglalaman ng mga identifier ng mga kategorya ng notification kung saan ang extension ay i-activate. Ang opsiyonal na key na UNNotificationExtensionInitialContentSizeRatio ay nagtatakda ng initial aspect ratio ng custom na interface para sa tamang pagpoposisyon.

Arkitektura ng folder ng extension

Inirerekomenda na panatilihin ang malinis na arkitektura sa target-extension: hiwalay na folder para sa mga controller, hiwalay para sa custom na view. Dahil ang extension ay isang hiwalay na binary file, ang code ng pangunahing application ay hindi direktang ma-access. Para sa pagbabahagi ng code, gumawa ng hiwalay na framework o gumamit ng App Group para sa data.

Pagpapatupad ng UNNotificationContentExtension protocol

UNNotificationContentExtension — protocol na dapat ipatupad ng controller sa Notification Content Extension. Ang tanging mandatoryong method ay didReceive(_:with:), na tinatawag kapag nakatanggap ng notification. Ang controller ay tumatanggap ng notification at handa na view controller na kailangang i-update gamit ang data.

Pangunahing pagpapatupad ng controller

Ang controller ng extension ay dapat magmana ng UIViewController at magpatupad ng UNNotificationContentExtension. Ang Storyboard o xib ay naka-link sa controller na ito. Kapag nakatanggap ng notification, ang didReceive method ay nagpapadala ng nilalaman, at ang controller ay nag-a-update ng mga view nito.

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

Pamamahala ng laki ng interface

Tinutukoy ng system ang laki ng custom na interface batay sa key na UNNotificationExtensionInitialContentSizeRatio sa Info.plist at kasalukuyang nilalaman. Inirerekomenda na itakda ang key na ito sa halagang 0.1 para sa minimum na paunang laki, pagkatapos ay baguhin ang laki sa pamamagitan ng preferredContentSize pagkatapos ng pag-load ng nilalaman.

Pag-customize ng interface at interaktibidad

Notification Content Extension ay nagbibigay ng buong kalayaan sa paggawa ng interface. Maaari kang gumamit ng anumang UIKit component: UITableView, MKMapView, WKWebView, UIStackView. Gayunpaman, mahalagang isaalang-alang ang limitadong espasyo ng notification at i-optimize ang performance.

Pagdaragdag ng mapa sa notification

Isa sa mga sikat na scenario ay ang pagpapakita ng mapa na may lokasyon. Para dito, sa Storyboard ng extension ay idinadagdag ang MKMapView, at ang controller ay nagpapadala ng coordinates mula sa nilalaman ng notification. Mahalagang huwag kalimutang idagdag ang MapKit sa target ng extension. Kapag gumagamit ng mapa, isaalang-alang ang limitasyon ng memorya ng extension — ang pag-load ng kumplikadong tiles ay maaaring lumagpas sa available na resources.

Animation at transition

Ang Notification Content Extension ay sumusuporta sa UIView animation, kabilang ang pagbabago ng laki, paglipat at transparency ng mga elemento. Kapag pumapasok sa extended mode ng notification, maaari mong simulan ang animation ng paglitaw ng nilalaman. Ang animation ay dapat maikli (hanggang 0.5 segundo) at hindi makagambala sa user sa pakikipag-ugnayan sa notification. Iwasan ang walang katapusang animation — nauubos nito ang baterya at binabawasan ang performance.

Paghawak ng pagpindot sa custom na interface

Dahil ang extension ay isang ganap na UIViewController, maaari kang magdagdag ng gestures at paghawak ng pagpindot. Ang UIKit gestures (UITapGestureRecognizer, UIButton) ay gumagana nang standard. Para sa mga aksyon na nangangailangan ng pagbubukas ng application, gamitin ang delegate ng extension o userNotificationCenter. Ang interactive na elemento ay dapat sapat na malaki para sa komportableng pagpindot sa limitadong espasyo — ang minimum na laki ng touch target ay 44x44 puntos ayon sa rekomendasyon ng Apple.

Paggawa gamit ang media at mga attachment

Nilalamang multimedia — pangunahing kakayahan ng Notification Content Extension. Ang notification ay maaaring maglaman ng mga larawan, GIF, audio at video na ipinapakita sa custom na interface. Ang mga attachment ay inihatid sa pamamagitan ng UNNotificationAttachment, na maaaring idagdag ng server sa pamamagitan ng payload at ng Notification Service Extension pagkatapos i-download. Ang mga suportadong format ay JPEG, PNG, MPEG-4 at MP3.

Pagpapakita ng media sa extension

Upang magpakita ng larawan, sapat na upang makuha ang UNNotificationAttachment mula sa nilalaman ng notification at i-load ito mula sa lokal na URL. Mahalagang tandaan na ang extension ay may access lamang sa mga lokal na file — ang mga remote na resources ay dapat na dati nang na-download ng Service Extension. Maximum na laki ng attachment — 50 MB sa iOS 15+, ang limitasyon ay tinataas sa bawat susunod na update. Para sa suporta ng maraming larawan, gumamit ng UNNotificationAttachment na may iba't ibang identifier at ipakita ang mga ito sa pamamagitan ng UIPageViewController.

Pag-load at pagpapakita ng mga larawan

Upang magpakita ng larawan sa custom na interface, ang extension ay kumukuha ng UNNotificationAttachment mula sa nilalaman ng notification at nilo-load ito mula sa lokal na URL. Ang attachment ay dapat na dati nang na-download ng Notification Service Extension — ang Content Extension ay walang access sa network. Maximum na laki ng media attachment — 50 MB sa iOS 15+, sa mga naunang bersyon ang limitasyon ay 10 MB. Ang extension ay dapat na tamang hawakan ang kawalan ng attachment at magpakita ng fallback interface. Para sa pre-load ng mga larawang mababa ang resolution, gumamit ng thumbnail version na ginawa ng Service Extension bago i-attach.

Pag-play ng video sa notification

Sinusuportahan ng iOS ang pag-play ng video sa Notification Content Extension sa pamamagitan ng AVPlayerLayer. Ang extension ay maaaring magpakita ng video player na may mga control button nang direkta sa notification. Ito ay lalong kapaki-pakinabang para sa mga application ng video surveillance, streaming o preview ng nilalaman. Auto-play na walang tunog ay pinahihintulutan sa kondisyon na ang user ay umaasa ng multimedia content sa notification na ito. Kapag nagpapatupad ng video player, magdagdag ng mga control element: play/pause, progress bar at close button. Tiyakin na ang video ay hindi awtomatikong magsisimula na may tunog — ito ay lumalabag sa mga rekomendasyon ng Apple tungkol sa karanasan ng user. Para sa slideshow ng maraming larawan, gumamit ng animated transition sa pagitan ng mga ito sa pamamagitan ng UIView.transition na may opsyon sa transition ng paglipat ng pahina.

Pag-optimize ng performance ng extension

Ang Notification Content Extension ay gumagana sa limitadong kapaligiran na may memory limit na humigit-kumulang 50 MB. Para i-optimize ang performance, gumamit ng lazy loading ng mga larawan, iwasan ang mabibigat na kalkulasyon sa main thread at ilapat ang Auto Layout na may simpleng constraints. Gawin ang mabibigat na operasyon tulad ng pagproseso ng larawan o pag-parse ng data sa background queues (DispatchQueue.global). Kapag nalagpasan ang memory limit, isasara ng system ang extension at makikita ng user ang standard na notification. Inirerekomenda na i-profile ang extension sa pamamagitan ng Instruments (Allocations at Time Profiler) bago ang publikasyon, pati na rin suriin ang paggamit ng memorya sa mga tunay na device na may iba't ibang bersyon ng iOS.

Mga madalas itanong

Maaari bang gamitin ang SwiftUI sa Notification Content Extension?

Oo, simula sa iOS 16 ang Notification Content Extension ay sumusuporta sa SwiftUI sa pamamagitan ng UIHostingController. Gayunpaman, ang UIKit ay nananatiling mas matatag na pagpipilian para sa mga kumplikadong interface dahil sa limitadong suporta ng SwiftUI sa mga extension.

Bakit hindi na-activate ang extension para sa aking notification?

Suriin na ang categoryIdentifier sa payload ng notification ay tumutugma sa UNNotificationExtensionCategory sa Info.plist ng extension. Tiyakin din na ang extension ay idinagdag sa main app target at na-sign nang tama.

Paano maglipat ng data mula sa pangunahing application papunta sa extension?

Gumamit ng App Group — shared storage (UserDefaults suite) o file container. Ang pangunahing application at extension ay dapat nasa parehong grupo ng developer at may naka-enable na App Groups capability.

Paano i-update ang nilalaman ng extension nang walang bagong notification?

Gamitin ang method na didReceive(_:with:) na may UNNotificationContentExtensionMediaPlayPauseButtonType para sa media control o humiling ng update sa pamamagitan ng delegate. Ang buong update ng nilalaman nang walang bagong notification ay hindi posible.

Paano i-debug ang Notification Content Extension?

Piliin ang target ng extension sa Xcode at patakbuhin sa simulator. Gumamit ng lldb at breakpoints tulad ng sa ordinaryong application. Para sa pagsubok, magpadala ng push notification sa pamamagitan ng Firebase Console o lokal sa pamamagitan ng Pusher.

Buod

  • Notification Content Extension — iOS extension para sa custom na pagpapakita ng push notification.
  • Ang extension ay nagpapatupad ng UNNotificationContentExtension at nagbibigay ng buong UIKit interface.
  • Na-activate para sa mga notification na may tumutugmang categoryIdentifier.
  • Sinusuportahan ang anumang UI component: mga mapa, larawan, video, animation.
  • Gumagana sa isolated na proseso na may access sa pamamagitan ng App Group.
  • Limitasyon ng laki — 50 MB para sa naka-unpack na extension.
  • Para sa nilalamang media, gamitin ang UNNotificationAttachment na inihanda ng Service Extension.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din