Notification Content Extension — यह एक iOS एक्सटेंशन प्रकार है जो पुश नोटिफिकेशन के मानक टेम्पलेट को पूरी तरह से कस्टम यूज़र इंटरफ़ेस से बदल देता है। डेवलपर को नोटिफिकेशन के अंदर इमेज, ऑडियो प्लेयर, एक्शन बटन, प्रोग्रेस बार और कस्टम एनिमेशन प्रदर्शित करने की क्षमता मिलती है, जो मानक बैनर को एक पूर्ण मिनी-एप्लिकेशन में विस्तारित करता है। WWDC 2025 के अनुसार, एक्सटेंशन UNNotificationContentExtension का उपयोग करता है और एक नोटिफिकेशन में 4 मीडिया अटैचमेंट तक का समर्थन करता है, साथ ही UNNotificationAction के माध्यम से इंटरैक्टिव क्रियाओं की प्रोसेसिंग करता है।
मुख्य बात
Notification Content Extension — यह एक app एक्सटेंशन है जो iOS पर पुश नोटिफिकेशन के प्रदर्शन को ओवरराइड करता है। मानक बैनर जिसमें शीर्षक, संदेश का मुख्य भाग और बटन होते हैं, के बजाय एक ऐसा इंटरफ़ेस दिखाया जा सकता है जो पूरी तरह से Interface Builder में या UIKit या SwiftUI के माध्यम से प्रोग्रामेटिक रूप से विकसित किया गया हो।
Notification Service Extension के विपरीत, जो प्रदर्शन से पहले सामग्री को बदलता है, Content Extension केवल दृश्य प्रस्तुति के लिए जिम्मेदार है। एक्सटेंशन सभी संशोधनों के बाद तैयार नोटिफिकेशन प्राप्त करता है और तय करता है कि इसे कैसे प्रदर्शित किया जाए। यह दो प्रकार के नोटिफिकेशन एक्सटेंशन के बीच मुख्य अंतर है।
एक्सटेंशन तब सक्रिय होता है जब उपयोगकर्ता विस्तार जेस्चर करता है — नोटिफिकेशन को नीचे स्क्रॉल करता है या उस पर क्लिक करता है (डिवाइस मॉडल के आधार पर)। iOS एक्सटेंशन प्रक्रिया शुरू करता है, निर्दिष्ट nib या storyboard से कंट्रोलर बनाता है और UNNotificationContentExtension के माध्यम से नोटिफिकेशन भेजता है।
विकास Notification Content Extension टेम्पलेट के साथ Xcode में एक नया target जोड़ने से शुरू होता है। Xcode MainInterface.storyboard फ़ाइल और UIViewController से विरासत में मिला एक वर्ग बनाता है जो UNNotificationContentExtension प्रोटोकॉल को लागू करता है।
कस्टम क्षेत्र की अधिकतम ऊंचाई iPhone पर 320 पॉइंट (बड़े स्क्रीन वाले मॉडल के लिए) और iPad पर 352 पॉइंट है। इन सीमाओं से अधिक का कंटेंट काट दिया जाता है। विभिन्न आकारों के अनुकूलन के लिए स्क्रॉल करने योग्य कंटेंट के लिए Auto Layout और UIScrollView का उपयोग करने की अनुशंसा की जाती है। चौड़ाई हमेशा नोटिफिकेशन की चौड़ाई के बराबर होती है और डिवाइस घुमाने पर स्वचालित रूप से बदल जाती है।
Apple Human Interface Guidelines चेतावनी देता है: नोटिफिकेशन इंटरफ़ेस संक्षिप्त होना चाहिए और इसमें केवल एक मुख्य तत्व होना चाहिए — इमेज, प्लेयर, मैप या त्वरित इनपुट फ़ॉर्म। कई इंटरैक्टिव तत्व उपयोगकर्ता को ओवरलोड करते हैं और इंटरैक्शन को जटिल बनाते हैं।
App Group — एक्सटेंशन और मुख्य एप्लिकेशन के बीच डेटा आदान-प्रदान का एकमात्र तंत्र। App Group की साझा निर्देशिका के माध्यम से कैश की गई इमेज, टोकन और सेटिंग्स ट्रांसफर की जा सकती हैं। प्रक्रियाओं के अलगाव के कारण मुख्य एप्लिकेशन के API के सीधे कॉल या उसके UserDefaults तक पहुँच उपलब्ध नहीं है।
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 — मुख्य प्रोटोकॉल जो कस्टम नोटिफिकेशन के जीवनचक्र को परिभाषित करता है। प्रोटोकॉल सामग्री प्राप्त करने, क्रियाओं को प्रोसेस करने और इंटरफ़ेस प्रबंधित करने के लिए विधियाँ प्रदान करता है।
didReceive(_:with:) नोटिफिकेशन प्राप्त होने पर कॉल किया जाता है। एक्सटेंशन को मीडिया प्लेयर प्रबंधित करने के लिए UNNotification ऑब्जेक्ट और UNNotificationContentExtensionMediaPlayPauseButtonType प्राप्त होता है। इस विधि में इंटरफ़ेस सेट अप करना होता है — इमेज लोड करना, प्लेयर इनिशियलाइज़ करना या डेटा प्रदर्शित करना। सिस्टम इस विधि को हर बार रियल-टाइम में नोटिफिकेशन अपडेट होने पर कॉल करता है।
यह ध्यान रखना महत्वपूर्ण है कि एक्सटेंशन के पास निष्पादन के लिए सीमित समय है — पूर्ण प्रदर्शन चक्र के लिए लगभग 30 सेकंड। यदि इस समय के भीतर इंटरफ़ेस तैयार नहीं होता है, तो iOS एक सिस्टम नोटिफिकेशन दिखाएगा। भारी संसाधनों के लिए — नेटवर्क से इमेज लोड करना, वीडियो डिकोड करना — App Group के माध्यम से प्री-कैशिंग के साथ एसिंक्रोनस ऑपरेशन का उपयोग करने की अनुशंसा की जाती है।
प्रोटोकॉल में play/pause बटन के लिए वैकल्पिक विधियाँ शामिल हैं: mediaPlay, mediaPause और mediaPlayPauseButtonType। यदि नोटिफिकेशन में ऑडियो या वीडियो कंटेंट है, तो एक्सटेंशन सिस्टम नियंत्रण तत्व के साथ एक अंतर्निहित प्लेयर दिखा सकता है। उपयुक्त बटन प्रकार लौटाने पर iOS स्वचालित रूप से एक्सटेंशन के ऊपरी दाएं कोने में प्ले बटन जोड़ता है।
UNNotificationAttachment — एक ऑब्जेक्ट जिसमें नोटिफिकेशन से जुड़ा मीडिया डेटा होता है। इमेज, ऑडियो फ़ाइलें और वीडियो सर्वर पर या Notification Service Extension में UNNotificationAttachment के माध्यम से नोटिफिकेशन निर्माण चरण में जोड़े जाते हैं।
इमेज के लिए: JPEG, PNG, GIF, HEIF। ऑडियो के लिए: MP3, AAC, ALAC, WAV। वीडियो के लिए: MPEG-4, H.264, HEVC। प्रत्येक अटैचमेंट का अधिकतम आकार — 50 MB, प्रति नोटिफिकेशन अधिकतम 4 अटैचमेंट। सिस्टम नोटिफिकेशन प्रदर्शित होने से पहले बैकग्राउंड में अटैचमेंट को स्वचालित रूप से डाउनलोड करता है और security-scoped संसाधनों के माध्यम से एक्सटेंशन को लोकल URL तक पहुँच प्रदान करता है।
Apple के अनुसार, एक्सटेंशन को स्वयं मीडिया डाउनलोड नहीं करना चाहिए — सिस्टम द्वारा डाउनलोड पूरा होने के बाद UNNotificationAttachment में पहले से ही लोकल URL होता है। हालांकि, यदि अटैचमेंट समय पर लोड नहीं हुआ (उदाहरण के लिए, खराब कनेक्शन के कारण), तो एक्सटेंशन एक प्लेसहोल्डर या वैकल्पिक टेक्स्ट प्रदर्शित कर सकता है।
प्रत्येक UNNotificationAttachment एक security-scoped URL प्रदान करता है, जिसे एक्सटेंशन startAccessingSecurityScopedResource() के माध्यम से एक्सेस करना चाहिए और stopAccessingSecurityScopedResource() के माध्यम से मुक्त करना चाहिए। इन विधियों को जोड़ी में कॉल किया जाना चाहिए — अन्यथा संसाधन मुक्त नहीं होगा और एक्सेस अधिकार लीक हो जाएगा।
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 कस्टम इंटरैक्टिव क्रियाओं का समर्थन करता है — बटन जो नोटिफिकेशन सामग्री के नीचे प्रदर्शित होते हैं। क्रियाएँ UNNotificationCategory के माध्यम से नोटिफिकेशन श्रेणी बनाते समय पंजीकृत की जाती हैं और विनाशकारी, टेक्स्ट या बैकग्राउंड हो सकती हैं।
UNNotificationAction — शीर्षक और वैकल्पिक विनाशकारी फ़्लैग के साथ सरल क्रिया। UNTextInputNotificationAction — टेक्स्ट इनपुट फ़ील्ड वाली क्रिया, उदाहरण के लिए संदेश पर त्वरित उत्तर देने के लिए। दोनों प्रकार UNNotificationActionOptions.authenticationRequired विकल्प का समर्थन करते हैं — निष्पादन से पहले डिवाइस अनलॉक करने की आवश्यकता।
एक्सटेंशन चयनित क्रिया को didReceive(_:withCompletionHandler:) विधि के माध्यम से प्राप्त करता है, जहाँ क्रिया पहचानकर्ता और वैकल्पिक टेक्स्ट के साथ UNNotificationResponse ऑब्जेक्ट पास किया जाता है। एक्सटेंशन प्रतिक्रिया को स्वयं प्रोसेस कर सकता है या इसे साझा 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: []
)
अक्सर पूछे जाने वाले प्रश्न
Content Extension नोटिफिकेशन के दृश्य प्रदर्शन के लिए जिम्मेदार है, जबकि Service Extension प्रदर्शन से पहले सामग्री बदलने के लिए जिम्मेदार है। Content Extension Service Extension के बाद काम करता है और नोटिफिकेशन के payload को बदल नहीं सकता।
Swift और Objective-C UIKit के लिए। iOS 16 से, SwiftUI भी NotificationContentView के माध्यम से आकार और कॉन्फ़िगरेशन मॉडिफ़ायर के साथ नोटिफिकेशन इंटरफ़ेस बनाने के लिए समर्थित है।
हाँ, iOS 16 से एक्सटेंशन UIHostingController के माध्यम से SwiftUI का उपयोग कर सकता है। हालांकि, UIKit की सभी क्षमताएँ — आकार, सीमाएँ, security-scoped संसाधन — बनी रहती हैं और SwiftUI कंटेंट पर लागू होती हैं।
एक नोटिफिकेशन में अधिकतम 4 अटैचमेंट। प्रत्येक अटैचमेंट का आकार 50 MB तक। समर्थित फ़ॉर्मेट: इमेज (JPEG, PNG, HEIF), ऑडियो (MP3, AAC) और वीडियो (MPEG-4, H.264)।
App Group के माध्यम से — डिस्क पर साझा निर्देशिका। app group सफ़िक्स वाला UserDefaults भी काम करता है। एक्सटेंशन प्रक्रियाओं के अलगाव के कारण मुख्य एप्लिकेशन API के सीधे कॉल उपलब्ध नहीं हैं।
निष्कर्ष
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें