Notification Content Extension — kakanyahan, custom UI at pagsasaayos sa iOS

May-akda: IT Sectr Nai-publish: 2026-06-15 Oras ng pagbabasa: 9 min

Notification Content Extension — ay isang uri ng iOS extension na pumapalit sa karaniwang template ng push notification ng isang ganap na custom na user interface. Ang developer ay nakakakuha ng kakayahang magpakita ng mga larawan, audio player, action button, progress bar, at custom na animation sa loob ng notification, na pinapalawak ang karaniwang banner sa isang ganap na mini-application. Ayon sa data ng WWDC 2025, ang extension ay gumagamit ng UNNotificationContentExtension at sumusuporta ng hanggang 4 na media attachment sa isang notification, pati na rin ang pagproseso ng mga interactive na aksyon sa pamamagitan ng UNNotificationAction.

Mga pangunahing punto

  • Notification Content Extension ay lumilikha ng custom na interface para sa push notification sa halip na karaniwang template ng system
  • Ang arkitektura ay batay sa protocol na UNNotificationContentExtension na may mga pamamaraang didReceive(_:with:) at didReceive(_:withCompletionHandler:)
  • Ang extension ay maaaring magpakita ng media attachment — mga larawan, audio at video — nang direkta sa loob ng notification nang hindi binubuksan ang application
  • Ang mga interactive na notification ay sumusuporta sa mga custom na aksyon na may feedback at text input
  • Ang laki ng interface ay limitado — maximum na taas ng custom na notification 320 puntos sa iPhone at 352 sa iPad

Ano ang Notification Content Extension

Notification Content Extension — ay isang app extension na nag-o-override sa pagpapakita ng push notification sa iOS. Sa halip na karaniwang banner na may pamagat, katawan ng mensahe at mga button, maaaring magpakita ng interface na ganap na idinisenyo sa Interface Builder o programmatically sa pamamagitan ng UIKit o SwiftUI.

Hindi tulad ng Notification Service Extension, na nagbabago ng nilalaman bago ipakita, ang Content Extension ay responsable lamang para sa visual na presentasyon. Ang extension ay tumatanggap ng handa na notification pagkatapos ng lahat ng pagbabago at nagpapasya kung paano ito ipapakita. Ito ang pangunahing pagkakaiba sa pagitan ng dalawang uri ng notification extension.

Ang extension ay naa-activate kapag ang user ay nagsagawa ng gesture ng pagpapalawak — ini-scroll pababa ang notification o nag-click dito (depende sa modelo ng device). Sinimulan ng iOS ang proseso ng extension, lumilikha ng controller mula sa tinukoy na nib o storyboard, at ipinapasa ang notification sa pamamagitan ng UNNotificationContentExtension.

Paggawa ng custom na interface ng notification

Ang pag-develop ay nagsisimula sa pagdaragdag ng bagong target sa Xcode na may template na Notification Content Extension. Gumagawa ang Xcode ng file na MainInterface.storyboard at isang klase na nagmamana mula sa UIViewController, na nagpapatupad ng protocol na UNNotificationContentExtension.

Sukat at limitasyon ng interface

Maximum na taas ng custom na lugar — 320 puntos sa iPhone (para sa mga modelong may malaking screen) at 352 puntos sa iPad. Ang nilalaman na lumalampas sa mga hangganang ito ay pinuputol. Para sa pagbagay sa iba't ibang laki, inirerekomenda ang paggamit ng Auto Layout at UIScrollView para sa nai-scroll na nilalaman. Ang lapad ay palaging katumbas ng lapad ng notification at awtomatikong nagbabago kapag pinaikot ang device.

Ang Apple Human Interface Guidelines ay nagbababala: ang interface ng notification ay dapat na maigsi at naglalaman lamang ng isang pangunahing elemento — larawan, player, mapa, o form ng mabilisang input. Ang maraming interactive na elemento ay nagpapabigat sa user at nagpapahirap sa pakikipag-ugnayan.

Pakikipag-ugnayan sa pangunahing application

App Group — ang tanging mekanismo ng pagpapalitan ng data sa pagitan ng extension at ng pangunahing application. Sa pamamagitan ng shared directory ng App Group, maaaring ilipat ang mga naka-cache na larawan, token, at setting. Ang mga direktang tawag sa API ng pangunahing application o pag-access sa UserDefaults nito ay hindi available dahil sa paghihiwalay ng proseso.

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

Protocol na UNNotificationContentExtension

UNNotificationContentExtension — ang pangunahing protocol na tumutukoy sa lifecycle ng custom na notification. Ang protocol ay nagbibigay ng mga pamamaraan para sa pagtanggap ng nilalaman, pagproseso ng mga aksyon, at pamamahala ng interface.

Pamamaraang didReceive:with:

didReceive(_:with:) ay tinatawag kapag nakatanggap ng notification. Ang extension ay tumatanggap ng UNNotification object at UNNotificationContentExtensionMediaPlayPauseButtonType para sa pamamahala ng media player. Sa pamamaraang ito, kailangang i-configure ang interface — mag-load ng larawan, mag-initialize ng player, o magpakita ng data. Tinatawag ng system ang pamamaraang ito sa bawat oras na ang notification ay na-update sa real-time.

Mahalagang isaalang-alang na ang extension ay may limitadong oras para sa pagpapatupad — mga 30 segundo para sa isang buong cycle ng pagpapakita. Kung ang interface ay hindi handa sa oras na ito, magpapakita ang iOS ng system notification. Para sa mabibigat na resources — pag-load ng mga larawan mula sa network, pag-decode ng video — inirerekomenda ang paggamit ng mga asynchronous na operasyon na may paunang pag-cache sa pamamagitan ng App Group.

Pamamahala ng media player

Ang protocol ay may kasamang opsyonal na mga pamamaraan para sa play/pause button: mediaPlay, mediaPause, at mediaPlayPauseButtonType. Kung ang notification ay naglalaman ng audio o video na nilalaman, ang extension ay maaaring magpakita ng built-in na player na may system control element. Awtomatikong nagdaragdag ang iOS ng play button sa kanang sulok sa itaas ng extension kapag ibinalik ang kaukulang uri ng button.

Media attachment at ang kanilang pagproseso

UNNotificationAttachment — ang object na naglalaman ng media data na naka-attach sa notification. Ang mga larawan, audio file, at video ay idinaragdag sa yugto ng paggawa ng notification sa server o sa Notification Service Extension sa pamamagitan ng UNNotificationAttachment.

Mga format na suportado

Para sa mga larawan: JPEG, PNG, GIF, HEIF. Para sa audio: MP3, AAC, ALAC, WAV. Para sa video: MPEG-4, H.264, HEVC. Maximum na laki ng bawat attachment — 50 MB, hanggang 4 na attachment bawat notification. Awtomatikong dina-download ng system ang mga attachment sa background bago ipakita ang notification at nagbibigay ng access sa extension sa mga lokal na URL sa pamamagitan ng security-scoped resources.

Ayon sa Apple, hindi dapat mag-load ang extension ng media nang mag-isa — ang UNNotificationAttachment ay naglalaman na ng lokal na URL pagkatapos makumpleto ng system ang pag-download. Gayunpaman, kung ang attachment ay hindi na-download sa oras (halimbawa, sa mahinang koneksyon), ang extension ay maaaring magpakita ng placeholder o alternatibong teksto.

Paggawa gamit ang security-scoped resources

Ang bawat UNNotificationAttachment ay nagbibigay ng security-scoped URL, na dapat i-access ng extension sa pamamagitan ng startAccessingSecurityScopedResource() at bitawan sa pamamagitan ng stopAccessingSecurityScopedResource(). Ang mga pamamaraang ito ay dapat tawagin nang magkapares — kung hindi, ang resource ay hindi mapapalaya at magdudulot ng pagtagas ng mga karapatan sa pag-access.

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)

Interactive na notification at aksyon

Notification Content Extension ay sumusuporta sa mga custom na interactive na aksyon — mga button na ipinapakita sa ilalim ng nilalaman ng notification. Ang mga aksyon ay nirerehistro kapag lumilikha ng kategorya ng notification sa pamamagitan ng UNNotificationCategory at maaaring mapanira, tekstwal, o background.

Mga uri ng aksyon

UNNotificationAction — isang simpleng aksyon na may pamagat at opsyonal na flag ng pagiging mapanira. UNTextInputNotificationAction — isang aksyon na may field ng text input, halimbawa para sa mabilisang pagtugon sa mensahe. Ang parehong uri ay sumusuporta sa opsyon na UNNotificationActionOptions.authenticationRequired — pangangailangan na i-unlock ang device bago isagawa.

Ang extension ay tumatanggap ng napiling aksyon sa pamamagitan ng pamamaraang didReceive(_:withCompletionHandler:), kung saan ipinapasa ang UNNotificationResponse object na may identifier ng aksyon at opsyonal na teksto. Maaaring iproseso ng extension ang tugon nang mag-isa o ipasa ito sa pangunahing application sa pamamagitan ng shared container ng App Group.

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

Mga madalas itanong

Ano ang pagkakaiba ng Notification Content Extension at Service Extension?

Ang Content Extension ay responsable para sa visual na pagpapakita ng notification, habang ang Service Extension ay responsable para sa pagbabago ng nilalaman bago ipakita. Ang Content Extension ay gumagana pagkatapos ng Service Extension at hindi maaaring baguhin ang payload ng notification.

Anong mga programming language ang suportado?

Swift at Objective-C para sa UIKit. Mula sa iOS 16, ang SwiftUI ay suportado rin para sa paggawa ng interface ng notification sa pamamagitan ng NotificationContentView na may mga modifier ng laki at configuration.

Maaari bang gamitin ang SwiftUI sa Notification Content Extension?

Oo, mula sa iOS 16 ang extension ay maaaring gumamit ng SwiftUI sa pamamagitan ng UIHostingController. Gayunpaman, lahat ng kakayahan ng UIKit — laki, limitasyon, security-scoped resources — ay nananatili at inilalapat sa nilalaman ng SwiftUI.

Ilang media attachment ang maaaring ilakip sa isang notification?

Hanggang 4 na attachment bawat notification. Bawat attachment hanggang 50 MB. Suportado ang mga larawan (JPEG, PNG, HEIF), audio (MP3, AAC) at video (MPEG-4, H.264).

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

Sa pamamagitan ng App Group — shared directory sa disk. Gumagana rin ang UserDefaults na may app group suffix. Ang mga direktang tawag sa API ng pangunahing application ay hindi available dahil sa paghihiwalay ng proseso ng extension.

Buod

  • Notification Content Extension ay pumapalit sa karaniwang interface ng notification ng isang custom na may anumang visual na elemento
  • Ang arkitektura ay gumagamit ng protocol na UNNotificationContentExtension na may mga pamamaraang didReceive para sa pag-update ng interface
  • UNNotificationAttachment ay nagbibigay ng media attachment na may awtomatikong background download at security-scoped access
  • Ang mga interactive na aksyon ay sumusuporta sa text input at mapanirang operasyon sa pamamagitan ng UNNotificationAction
  • Maximum na taas ng interface — 320 puntos sa iPhone, para sa pagbagay ng nilalaman inirerekomenda ang UIScrollView
  • Pagpapalitan ng data sa pangunahing application — sa pamamagitan lamang ng App Group at shared directory sa disk

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