Notification Content Extension — सार, कस्टम UI और iOS में सेटअप

लेखक: IT Sectr प्रकाशित: 2026-06-15 पढ़ने का समय: 9 मिनट

Notification Content Extension — यह एक iOS एक्सटेंशन प्रकार है जो पुश नोटिफिकेशन के मानक टेम्पलेट को पूरी तरह से कस्टम यूज़र इंटरफ़ेस से बदल देता है। डेवलपर को नोटिफिकेशन के अंदर इमेज, ऑडियो प्लेयर, एक्शन बटन, प्रोग्रेस बार और कस्टम एनिमेशन प्रदर्शित करने की क्षमता मिलती है, जो मानक बैनर को एक पूर्ण मिनी-एप्लिकेशन में विस्तारित करता है। WWDC 2025 के अनुसार, एक्सटेंशन UNNotificationContentExtension का उपयोग करता है और एक नोटिफिकेशन में 4 मीडिया अटैचमेंट तक का समर्थन करता है, साथ ही UNNotificationAction के माध्यम से इंटरैक्टिव क्रियाओं की प्रोसेसिंग करता है।

मुख्य बात

  • Notification Content Extension मानक सिस्टम टेम्पलेट के बजाय पुश नोटिफिकेशन के लिए कस्टम इंटरफ़ेस बनाता है
  • आर्किटेक्चर UNNotificationContentExtension प्रोटोकॉल पर आधारित है जिसमें didReceive(_:with:) और didReceive(_:withCompletionHandler:) विधियाँ हैं
  • एक्सटेंशन बिना एप्लिकेशन खोले नोटिफिकेशन के अंदर ही मीडिया अटैचमेंट — इमेज, ऑडियो और वीडियो — प्रदर्शित कर सकता है
  • इंटरैक्टिव नोटिफिकेशन फीडबैक और टेक्स्ट इनपुट के साथ कस्टम क्रियाओं का समर्थन करते हैं
  • इंटरफ़ेस का आकार सीमित है — कस्टम नोटिफिकेशन की अधिकतम ऊंचाई iPhone पर 320 पॉइंट और iPad पर 352 पॉइंट है

Notification Content Extension क्या है

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 तक पहुँच उपलब्ध नहीं है।

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

UNNotificationContentExtension प्रोटोकॉल

UNNotificationContentExtension — मुख्य प्रोटोकॉल जो कस्टम नोटिफिकेशन के जीवनचक्र को परिभाषित करता है। प्रोटोकॉल सामग्री प्राप्त करने, क्रियाओं को प्रोसेस करने और इंटरफ़ेस प्रबंधित करने के लिए विधियाँ प्रदान करता है।

didReceive:with: विधि

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 होता है। हालांकि, यदि अटैचमेंट समय पर लोड नहीं हुआ (उदाहरण के लिए, खराब कनेक्शन के कारण), तो एक्सटेंशन एक प्लेसहोल्डर या वैकल्पिक टेक्स्ट प्रदर्शित कर सकता है।

security-scoped संसाधनों के साथ कार्य करना

प्रत्येक UNNotificationAttachment एक security-scoped URL प्रदान करता है, जिसे एक्सटेंशन startAccessingSecurityScopedResource() के माध्यम से एक्सेस करना चाहिए और stopAccessingSecurityScopedResource() के माध्यम से मुक्त करना चाहिए। इन विधियों को जोड़ी में कॉल किया जाना चाहिए — अन्यथा संसाधन मुक्त नहीं होगा और एक्सेस अधिकार लीक हो जाएगा।

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)

इंटरैक्टिव नोटिफिकेशन और क्रियाएँ

Notification Content Extension कस्टम इंटरैक्टिव क्रियाओं का समर्थन करता है — बटन जो नोटिफिकेशन सामग्री के नीचे प्रदर्शित होते हैं। क्रियाएँ UNNotificationCategory के माध्यम से नोटिफिकेशन श्रेणी बनाते समय पंजीकृत की जाती हैं और विनाशकारी, टेक्स्ट या बैकग्राउंड हो सकती हैं।

क्रियाओं के प्रकार

UNNotificationAction — शीर्षक और वैकल्पिक विनाशकारी फ़्लैग के साथ सरल क्रिया। UNTextInputNotificationAction — टेक्स्ट इनपुट फ़ील्ड वाली क्रिया, उदाहरण के लिए संदेश पर त्वरित उत्तर देने के लिए। दोनों प्रकार UNNotificationActionOptions.authenticationRequired विकल्प का समर्थन करते हैं — निष्पादन से पहले डिवाइस अनलॉक करने की आवश्यकता।

एक्सटेंशन चयनित क्रिया को didReceive(_:withCompletionHandler:) विधि के माध्यम से प्राप्त करता है, जहाँ क्रिया पहचानकर्ता और वैकल्पिक टेक्स्ट के साथ UNNotificationResponse ऑब्जेक्ट पास किया जाता है। एक्सटेंशन प्रतिक्रिया को स्वयं प्रोसेस कर सकता है या इसे साझा 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: []
)

अक्सर पूछे जाने वाले प्रश्न

Notification Content Extension और Service Extension में क्या अंतर है?

Content Extension नोटिफिकेशन के दृश्य प्रदर्शन के लिए जिम्मेदार है, जबकि Service Extension प्रदर्शन से पहले सामग्री बदलने के लिए जिम्मेदार है। Content Extension Service Extension के बाद काम करता है और नोटिफिकेशन के payload को बदल नहीं सकता।

कौन सी प्रोग्रामिंग भाषाएँ समर्थित हैं?

Swift और Objective-C UIKit के लिए। iOS 16 से, SwiftUI भी NotificationContentView के माध्यम से आकार और कॉन्फ़िगरेशन मॉडिफ़ायर के साथ नोटिफिकेशन इंटरफ़ेस बनाने के लिए समर्थित है।

क्या Notification Content Extension में SwiftUI का उपयोग किया जा सकता है?

हाँ, 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 के सीधे कॉल उपलब्ध नहीं हैं।

निष्कर्ष

  • Notification Content Extension नोटिफिकेशन के मानक इंटरफ़ेस को किसी भी दृश्य तत्वों वाले कस्टम इंटरफ़ेस से बदल देता है
  • आर्किटेक्चर इंटरफ़ेस अपडेट करने के लिए didReceive विधियों के साथ UNNotificationContentExtension प्रोटोकॉल का उपयोग करता है
  • UNNotificationAttachment स्वचालित बैकग्राउंड डाउनलोड और security-scoped एक्सेस के साथ मीडिया अटैचमेंट प्रदान करता है
  • इंटरैक्टिव क्रियाएँ UNNotificationAction के माध्यम से टेक्स्ट इनपुट और विनाशकारी संचालन का समर्थन करती हैं
  • इंटरफ़ेस की अधिकतम ऊंचाई iPhone पर 320 पॉइंट है, कंटेंट अनुकूलन के लिए UIScrollView की अनुशंसा की जाती है
  • मुख्य एप्लिकेशन के साथ डेटा आदान-प्रदान — केवल App Group और डिस्क पर साझा निर्देशिका के माध्यम से

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें