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 «— ایک ایپ ایکسٹینشن ہے جو iOS پر پش نوٹیفکیشن کے ڈسپلے کو اووررائڈ کرتی ہے۔ معیاری بینر جس میں عنوان، پیغام کا باڈی اور بٹن ہوتے ہیں، اس کی بجائے ایک انٹرفیس دکھایا جا سکتا ہے جو مکمل طور پر» Interface Builder «میں یا» UIKit «یا» SwiftUI «کے ذریعے پروگرامائی طور پر تیار کیا گیا ہو۔»

«Notification Service Extension کے برعکس، جو ڈسپلے سے پہلے مواد تبدیل کرتا ہے،» Content Extension «صرف» «بصری نمائندگی» «کے لیے ذمہ دار ہے۔ ایکسٹینشن تمام تبدیلیوں کے بعد تیار نوٹیفکیشن وصول کرتی ہے اور فیصلہ کرتی ہے کہ اسے کیسے دکھانا ہے۔ یہ دو اقسام کے نوٹیفکیشن ایکسٹینشنز کے درمیان بنیادی فرق ہے۔»

«ایکسٹینشن اس وقت فعال ہوتی ہے جب صارف توسیعی جیسچر کرتا ہے — نوٹیفکیشن کو نیچے اسکرول کرتا ہے یا اس پر کلک کرتا ہے (ڈیوائس ماڈل پر منحصر ہے)۔ iOS ایکسٹینشن کا عمل شروع کرتا ہے، مخصوص» nib «یا» storyboard «سے کنٹرولر بناتا ہے اور نوٹیفکیشن کو» UNNotificationContentExtension «کے ذریعے بھیجتا ہے۔»

«کسٹم نوٹیفکیشن انٹرفیس بنانا»

«ترقی» Xcode «میں» Notification Content Extension «ٹیمپلیٹ کے ساتھ نیا» 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 «وسائل کے ذریعے ایکسٹینشن کو مقامی URLs تک رسائی فراہم کرتا ہے۔»

«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 کے بعد کام کرتا ہے اور نوٹیفکیشن کے پے لوڈ کو تبدیل نہیں کر سکتا۔»

«کون سی پروگرامنگ زبانیں تعاون یافتہ ہیں؟»

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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں