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 রিসোর্সের মাধ্যমে এক্সটেনশনকে লোকাল 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 রিসোর্স — preserved থাকে এবং 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন