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 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.
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.
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.
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.
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 — 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.
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.
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.
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.
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.
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.
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)
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.
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.
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
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.
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.
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.
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).
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
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.
Basahin din