Rich Notification হল iOS পুশ নোটিফিকেশনের একটি বর্ধিত ফরম্যাট যাতে মিডিয়া অ্যাটাচমেন্ট, ইন্টারঅ্যাকটিভ বাটন এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য কাস্টম ইন্টারফেস অন্তর্ভুক্ত থাকে। স্ট্যান্ডার্ড টেক্সট নোটিফিকেশনের বিপরীতে, Rich Notification ব্যানার বা লক স্ক্রিনে সরাসরি ইমেজ, ভিডিও এবং অডিও প্রদর্শন করতে পারে। Apple Developer Documentation, 2026 অনুসারে, UNNotificationAttachment একটি নোটিফিকেশনে 10টি ফাইল পর্যন্ত সমর্থন করে এবং সমস্ত ডিভাইসে সর্বোত্তম প্রদর্শনের জন্য সেগুলিকে স্বয়ংক্রিয়ভাবে স্কেল করে।
মুখ্য বিষয়
Rich Notification হল একটি iOS পুশ নোটিফিকেশন যাতে কেবল টেক্সট নয়, বরং মিডিয়া অ্যাটাচমেন্ট, ইন্টারঅ্যাকটিভ এলিমেন্ট এবং একটি কাস্টমাইজড ইন্টারফেস থাকে। “rich” শব্দটি নোটিফিকেশনে ইমেজ, ভিডিও, অডিও, অ্যাকশন বাটন এবং টেক্সট ইনপুট অন্তর্ভুক্ত করার ক্ষমতা প্রতিফলিত করে, যা একটি সাধারণ সতর্কতাকে একটি পূর্ণাঙ্গ ইন্টারঅ্যাকটিভ উপাদানে রূপান্তরিত করে।
Apple UserNotifications ফ্রেমওয়ার্কের সাথে iOS 10-এ Rich Notification সমর্থন চালু করে। এর আগে, পুশ নোটিফিকেশনে কেবল টেক্সট, শব্দ এবং ব্যাজ থাকতে পারত। iOS 10 UNNotificationServiceExtension এবং UNNotificationContentExtension চালু করে, যা কন্টেন্ট পরিবর্তন এবং কাস্টম ইন্টারফেস তৈরি করার ক্ষমতা উন্মুক্ত করে। পরবর্তী সংস্করণগুলি Content Extension-এ SwiftUI সমর্থন, অ্যানিমেটেড GIF এবং উন্নত মিডিয়া স্কেলিং যোগ করে।
Rich Notification ব্যবহারকারীর সম্পৃক্ততা উল্লেখযোগ্যভাবে বৃদ্ধি করে। Apple-এর গবেষণায় দেখা যায় যে ইমেজযুক্ত নোটিফিকেশনগুলি কেবল টেক্সটযুক্ত নোটিফিকেশনের তুলনায় 30–40% বেশি ইন্টারঅ্যাকশন পায়। একটি পণ্যের ইমেজ, ভিডিও প্রিভিউ বা দ্রুত উত্তর বাটন ব্যবহারকারীকে অ্যাপ না খুলেই সরাসরি নোটিফিকেশন থেকে সিদ্ধান্ত নিতে দেয়। এটি লক্ষ্য কর্মের পথকে সংক্ষিপ্ত করে এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
UNNotificationAttachment তিনটি মিডিয়া বিভাগ সমর্থন করে: ইমেজ, ভিডিও এবং অডিও। প্রতিটি প্রকারের ফরম্যাট, আকার এবং সময়সীমার নিজস্ব সীমাবদ্ধতা রয়েছে। সিস্টেম কর্মক্ষমতা অপ্টিমাইজেশনের জন্য নোটিফিকেশন আকারে ফিট করতে ইমেজগুলি স্বয়ংক্রিয়ভাবে স্কেল করে এবং ভিডিওর সময়কাল 30 সেকেন্ডে সীমাবদ্ধ করে।
| মিডিয়ার ধরন | সমর্থিত ফরম্যাট | সর্বোচ্চ আকার |
|---|---|---|
| ইমেজ | JPEG, PNG, GIF, TIFF | প্রতি ফাইলে 10 MB |
| ভিডিও | MPEG, MP4, MOV | 10 MB, 30 সেকেন্ড পর্যন্ত |
| অডিও | MP3, AAC, WAV, CAF | 10 MB |
ইমেজগুলি কমপ্যাক্ট এবং বর্ধিত নোটিফিকেশন ভিউতে প্রদর্শনের জন্য সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে ক্রপ এবং স্কেল করা হয়। অ্যানিমেটেড GIF iOS 12 থেকে সমর্থিত এবং নোটিফিকেশন দেখার সময় স্বয়ংক্রিয়ভাবে চলে। প্রস্তাবিত ইমেজ আকার 1024x1024 পিক্সেল, যা বড় স্ক্রিনের iPad সহ সমস্ত ডিভাইসে পরিষ্কার প্রদর্শন নিশ্চিত করে।
Rich Notification-এ ভিডিও ডিফল্টভাবে শব্দ ছাড়া চলে — ব্যবহারকারী প্লেয়ার বাটনের মাধ্যমে শব্দ চালু করতে পারেন। সর্বোচ্চ ভিডিও সময়কাল 30 সেকেন্ড, তার পরে প্লেব্যাক বন্ধ হয়ে যায়। অডিও অ্যাটাচমেন্ট ভয়েস বার্তা বা শব্দ প্রিভিউর জন্য ব্যবহার করা যেতে পারে এবং বর্ধিত ভিউতে নোটিফিকেশনে ট্যাপ করলে চলে।
ইন্টারঅ্যাকটিভ অ্যাকশন ব্যবহারকারীকে অ্যাপ না খুলেই সরাসরি নোটিফিকেশন থেকে অপারেশন করতে দেয়। অ্যাকশনগুলি অ্যাপ চালু হওয়ার সময় UNNotificationCategory এবং UNNotificationAction-এর মাধ্যমে নিবন্ধিত হয়। প্রতিটি অ্যাকশন ব্যাকগ্রাউন্ড (অ্যাপ না খুলে) বা ফোরগ্রাউন্ড (অপারেশন সম্পূর্ণ করতে অ্যাপ খোলে) হতে পারে।
UNNotificationAction একটি শিরোনাম এবং ঐচ্ছিক মডিফায়ার যেমন requiresAuthentication (Face ID/Touch ID প্রয়োজন) বা destructive (লাল রঙে হাইলাইট) সহ একটি বাটন উপস্থাপন করে। UNTextInputNotificationAction একটি টেক্সট ইনপুট ক্ষেত্র যোগ করে এই ক্ষমতা বাড়ায় — বার্তা বা মন্তব্যের দ্রুত উত্তরের জন্য আদর্শ। নোটিফিকেশনে দীর্ঘ চাপ বা নিচে সোয়াইপ করলে অ্যাকশনগুলি প্রদর্শিত হয়।
নোটিফিকেশন ক্যাটাগরি কন্টেন্টের ধরনকে উপলব্ধ অ্যাকশনের সেটের সাথে সংযুক্ত করে। নিবন্ধন প্রক্রিয়া অ্যাপ চালু হওয়ার সময় AppDelegate-এ UNUserNotificationCenter.current().setNotificationCategories-এর মাধ্যমে সম্পাদিত হয়। ক্যাটাগরি সার্ভারে JSON পেলোডের category ফিল্ডে নির্দিষ্ট করা হয় এবং সিস্টেম স্বয়ংক্রিয়ভাবে নোটিফিকেশনে অ্যাকশনের সংশ্লিষ্ট সেট প্রয়োগ করে।
যখন ব্যবহারকারী একটি বাটন টিপে বা টেক্সট জমা দেয়, সিস্টেম didReceive response পদ্ধতি সহ UNUserNotificationCenterDelegate-কে কল করে। UNNotificationResponse-এ অ্যাকশন আইডেন্টিফায়ার এবং প্রবেশ করানো টেক্সট (UNTextInputNotificationAction-এর জন্য) থাকে। এই তথ্যের ভিত্তিতে, অ্যাপ সংশ্লিষ্ট বিজনেস লজিক সম্পাদন করে: একটি বার্তা পাঠায়, একটি অ্যাকশন নিশ্চিত করে বা একটি নির্দিষ্ট স্ক্রিন খোলে।
আসুন Rich Notification তৈরির সম্পূর্ণ চক্রটি দেখি: AppDelegate-এ ক্যাটাগরি নিবন্ধন থেকে Service Extension-এ প্রক্রিয়াকরণ এবং প্রদর্শন পর্যন্ত। AppDelegate বাটন সহ ক্যাটাগরি নিবন্ধন করে, সার্ভার একটি ইমেজ URL সহ নোটিফিকেশন পাঠায়, Service Extension মিডিয়া ডাউনলোড করে এবং Content Extension বাটন সহ একটি কাস্টম ইন্টারফেস প্রদর্শন করে।
// AppDelegate — ক্যাটাগরি এবং অ্যাকশন নিবন্ধন
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "উত্তর দিন",
options: [.authenticationRequired])
let likeAction = UNNotificationAction(
identifier: "like",
title: "পছন্দ করুন",
options: [])
let category = UNNotificationCategory(
identifier: "social_post",
actions: [replyAction, likeAction],
intentIdentifiers: [],
options: [])
UNUserNotificationCenter.current()
.setNotificationCategories([category])
return true
}
কাস্টম ফিল্ডে “social_post” ক্যাটাগরি এবং একটি ইমেজ URL সহ পুশ নোটিফিকেশন পাওয়ার পর, Service Extension সক্রিয় হয়। এক্সটেনশন ইমেজ ডাউনলোড করে নেটওয়ার্ক থেকে, একটি অনন্য আইডেন্টিফায়ার সহ UNNotificationAttachment তৈরি করে এবং এটি কন্টেন্টে যোগ করে। ডাউনলোড করা ফাইলের আকার পরীক্ষা করা গুরুত্বপূর্ণ — যদি এটি 10 MB অতিক্রম করে, অ্যাটাচমেন্ট তৈরি হবে না এবং সিস্টেম মিডিয়া ছাড়া নোটিফিকেশন দেখাবে।
class NotificationService: UNNotificationServiceExtension {
override func didReceive(
_ request: UNNotificationRequest,
withContentHandler contentHandler:
@escaping (UNNotificationContent) -> Void
) {
let content = (request.content.mutableCopy()
as! UNMutableNotificationContent)
guard let urlString = content.userInfo["media-url"]
as? String,
let url = URL(string: urlString)
else { contentHandler(request.content); return }
URLSession.shared.downloadTask(with: url) {
location, _, _ in
guard let location = location else {
contentHandler(content); return }
let attachment = try! UNNotificationAttachment(
identifier: "media", url: location,
options: [UNNotificationAttachmentOptionsTypeHintKey:
"jpg"])
content.attachments = [attachment]
contentHandler(content)
}.resume()
}
}
সার্ভার ছাড়া Rich Notification পরীক্ষা করতে, iOS সিমুলেটর ব্যবহার করুন এবং xcrun simctl push-এর মাধ্যমে টার্মিনালে পুশ পাঠান। পেলোডে, Service Extension সক্রিয় করতে mutable-content: 1 এবং অ্যাকশন প্রদর্শনের জন্য ক্যাটাগরি নির্দিষ্ট করতে ভুলবেন না। কমান্ডটি নির্বাচিত সিমুলেটরে সরাসরি একটি JSON ফাইল থেকে পুশ চালায়, যা সার্ভার অবকাঠামো সেটআপ না করেই দ্রুত পুনরাবৃত্তির অনুমতি দেয়।
UNNotificationContentExtension আপনাকে স্ট্যান্ডার্ড নোটিফিকেশন ইন্টারফেস সম্পূর্ণরূপে একটি কাস্টম UIKit বা SwiftUI ভিউ দিয়ে প্রতিস্থাপন করতে দেয়। এক্সটেনশনটি সক্রিয় হয় যখন ব্যবহারকারী নোটিফিকেশন প্রসারিত করে (ফোর্স টাচ বা নিচে সোয়াইপ) এবং এতে বাটন, স্লাইডার, অ্যানিমেশন এবং অন্যান্য UI উপাদান থাকতে পারে। Auto Layout ব্যবহার করে ইন্টারফেসের আকার কন্টেন্টের সাথে খাপ খায়।
Content Extension UIViewController থেকে উত্তরাধিকারসূত্রে প্রাপ্ত ভিউ কন্ট্রোলার সহ storyboard-এর উপর ভিত্তি করে। SwiftUI View iOS 16 থেকে UIHostingController-এর মাধ্যমে সংহত হয়, যা ইন্টারফেস তৈরির জন্য আধুনিক পদ্ধতির অনুমতি দেয়। iOS 14–15-এর সাথে পশ্চাদগামী সামঞ্জস্যের জন্য, xib ফাইল সহ UIKit ব্যবহার করার পরামর্শ দেওয়া হয়। ইন্টারফেস UNNotificationContent-এর মাধ্যমে Service Extension থেকে পরিবর্তিত কন্টেন্ট গ্রহণ করে।
Content Extension didReceive response পদ্ধতি সহ UNNotificationContentExtension প্রোটোকল বাস্তবায়ন করে। UNNotificationResponse-এ চাপা বাটন বা প্রবেশ করানো টেক্সট সম্পর্কে তথ্য থাকে। এক্সটেনশন নোটিফিকেশন বন্ধ না করেই ইন্টারফেস আপডেট করতে পারে বা এটি বন্ধ করতে কমপ্লিশন হ্যান্ডলার কল করতে পারে। এটি দ্রুত ইন্টারঅ্যাকশন দৃশ্যকল্প তৈরি করতে দেয়, যেমন নোটিফিকেশনে সরাসরি ভিজ্যুয়াল প্রতিক্রিয়া সহ একটি “লাইক”।
Apple সুপারিশ করে Content Extension সংক্ষিপ্ত এবং কার্যকরী রাখতে, অতিরিক্ত উপাদান এড়িয়ে। প্রসারিত নোটিফিকেশনের সর্বোচ্চ উচ্চতা প্রায় 400 পয়েন্ট, তার পরে কন্টেন্ট স্ক্রোল হয়। অন্যান্য নোটিফিকেশনের সাথে সামঞ্জস্যের জন্য সিস্টেম ফন্ট এবং স্পেসিং ব্যবহার করুন। বিভিন্ন স্ক্রিন আকারে পরীক্ষা করুন যাতে নিশ্চিত হন যে ইন্টারফেস iPhone এবং iPad উভয়েই সঠিকভাবে প্রদর্শিত হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
একটি মিডিয়া অ্যাটাচমেন্টের সর্বোচ্চ আকার 10 MB। সীমা অতিক্রম করলে, UNNotificationAttachment তৈরি হয় না এবং নোটিফিকেশন মিডিয়া ছাড়া প্রদর্শিত হয়। Service Extension-এ দ্রুত লোডিংয়ের জন্য ইমেজ 1–3 MB-তে অপ্টিমাইজ করার পরামর্শ দেওয়া হয়।
Rich Notifications iOS 10 এবং তার পরবর্তী সংস্করণের সমস্ত ডিভাইসে সমর্থিত, যার মধ্যে iPhone 5s এবং নতুন মডেল অন্তর্ভুক্ত। কাস্টম UI সহ Content Extension iOS 12 থেকে উপলব্ধ। Content Extension-এ SwiftUI — iOS 16 থেকে। পুরোনো সংস্করণে, নোটিফিকেশন স্ট্যান্ডার্ড ফর্মে প্রদর্শিত হয়।
হ্যাঁ, অ্যানিমেটেড GIF iOS 12 থেকে সমর্থিত। GIF একটি সাধারণ ইমেজের মতো UNNotificationAttachment-এর মাধ্যমে লোড হয় এবং নোটিফিকেশন দেখার সময় স্বয়ংক্রিয়ভাবে চলে। GIF-এর আকার অন্যান্য ফরম্যাটের মতো 10 MB-তে সীমাবদ্ধ।
একটি ক্যাটাগরি নিবন্ধন করার সময় প্রতি নোটিফিকেশনে সর্বোচ্চ 4টি অ্যাকশন। আরও নির্দিষ্ট করা হলে, সিস্টেম প্রথম 4টি প্রদর্শন করে এবং বাকিগুলি উপেক্ষা করে। সর্বোত্তম UX-এর জন্য 2–3টি বাটন ব্যবহার করার পরামর্শ দেওয়া হয় — অনেকগুলি বিকল্প ইন্টারফেস ওভারলোড করে।
হ্যাঁ, সার্ভারকে কাস্টম ফিল্ডে মিডিয়া ফাইল URL এবং mutable-content: 1 ফ্লাগ সহ JSON পেলোডের মাধ্যমে APNS (Apple Push Notification service) দিয়ে পুশ পাঠাতে হবে। সার্ভার Content Extension এবং অ্যাকশন সক্রিয় করতে ক্যাটাগরিও নির্দিষ্ট করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন