Notification Category: এটি কী, কী কী ক্যাটাগরি আছে এবং iOS-এ কীভাবে কাজ করে

লেখক: IT Sectr প্রকাশিত: 2026-03-20 পড়ার সময়: 8 মিনিট

Notification Category (নোটিফিকেশন ক্যাটাগরি) হল iOS-এর একটি মেকানিজম যা পুশ নোটিফিকেশনকে টাইপ অনুযায়ী গ্রুপ করে এবং সেগুলিতে কাস্টম অ্যাকশন সংযুক্ত করে। ক্যাটাগরি নির্ধারণ করে যে নোটিফিকেশনে 3D Touch বা লং-প্রেস ব্যবহার করলে কোন বাটনগুলো দেখানো হবে, পাশাপাশি সিস্টেম এই টাইপের আগত নোটিফিকেশন কীভাবে প্রসেস করে। Apple ডেভেলপার ডকুমেন্টেশন অনুযায়ী, UNNotificationCategory UNUserNotificationCenter-এ রেজিস্টার করা হয় এবং APNS পেলোডের category ফিল্ডের মাধ্যমে নোটিফিকেশনের সাথে সংযুক্ত করা হয়।

মূল বিষয়সমূহ

  • Notification Category — পুশ নোটিফিকেশন শ্রেণীবদ্ধ করার এবং সেগুলিতে অ্যাকশন যোগ করার iOS মেকানিজম
  • UNNotificationCategory — একটি ক্লাস যা UNNotificationAction-এর সেট সহ একটি ক্যাটাগরি রেজিস্টার করে
  • অ্যাকশন — নোটিফিকেশনের নিচে বাটন: টেক্সট ইনপুটের জন্য UNTextInputAction, ট্যাপের জন্য UNNotificationAction
  • সংযোগ — ক্যাটাগরি APNS পেলোডের aps ডিকশনারির category কী-এর মাধ্যমে নির্দিষ্ট করা হয়
  • Android থেকে পার্থক্য — iOS Category অ্যাকশন পরিচালনা করে, যেখানে Android Channel গুরুত্ব এবং শব্দ পরিচালনা করে

iOS-এ Notification Category কী?

Notification Category হল iOS-এর একটি ফিচার (সংস্করণ 8.0 থেকে) যা ডেভেলপারদের পুশ নোটিফিকেশন শ্রেণীবদ্ধ করতে এবং সেগুলিতে ইন্টারঅ্যাকটিভ অ্যাকশন যোগ করতে দেয়। যখন একজন ব্যবহারকারী একটি নোটিফিকেশন পান এবং জোরে চাপ দেন (3D Touch) বা লং-প্রেস করেন, তখন ক্যাটাগরি দ্বারা নির্ধারিত বাটনগুলো দেখা যায়। এটি নোটিফিকেশনকে ইন্টারঅ্যাকটিভ করে তোলে এবং ব্যবহারকারীদের অ্যাপ না খুলেই পদক্ষেপ নিতে দেয়।

একটি ক্যাটাগরি UNNotificationCategory অবজেক্টের মাধ্যমে রেজিস্টার করা হয়, যাতে একটি আইডেন্টিফায়ার, অ্যাকশনের একটি অ্যারে এবং ঐচ্ছিক ডিসপ্লে প্যারামিটার থাকে। সিস্টেম APNS পেলোড থেকে ক্যাটাগরি আইডেন্টিফায়ার ব্যবহার করে রেজিস্টার করা ক্যাটাগরি খুঁজে বের করে এবং সংশ্লিষ্ট বাটনগুলো প্রদর্শন করে।

Android Notification Channel-এর বিপরীতে, iOS Category গুরুত্ব, শব্দ বা কম্পন পরিচালনা করে না। এর একমাত্র উদ্দেশ্য নোটিফিকেশনের জন্য ইন্টারঅ্যাকটিভ সক্ষমতা প্রদান করা: উত্তর, নিশ্চিতকরণ, বাতিল বা টেক্সট ইনপুট বাটন।

ক্যাটাগরি কি বাধ্যতামূলক?

iOS-এ পুশ নোটিফিকেশন দেখানোর জন্য ক্যাটাগরি বাধ্যতামূলক নয়। নোটিফিকেশন যেভাবেই হোক দেখা যাবে — ক্যাটাগরি রেজিস্টার করা থাকলে বাটন সহ, অথবা বাটন ছাড়া। ক্যাটাগরি শুধুমাত্র নোটিফিকেশনে ইন্টারঅ্যাকটিভিটি যোগ করার জন্য প্রয়োজন।

নোটিফিকেশন ক্যাটাগরি কীভাবে কাজ করে?

ক্যাটাগরি মেকানিজম চারটি ধাপ নিয়ে গঠিত: ক্লায়েন্টে ক্যাটাগরি রেজিস্টার করা, ক্যাটাগরি সহ APNS পেলোড পাঠানো, সিস্টেম দ্বারা ক্যাটাগরি চিহ্নিত করা এবং ব্যবহারকারীর অ্যাকশন হ্যান্ডল করা।

  • রেজিস্ট্রেশন — অ্যাপ অ্যাকশনের অ্যারে সহ UNNotificationCategory তৈরি করে এবং UNUserNotificationCenter-এ রেজিস্টার করে
  • পাঠানো — সার্ভার APNS পেলোডে category কী অন্তর্ভুক্ত করে যার মান ক্যাটাগরি আইডেন্টিফায়ারের সাথে মেলে
  • প্রদর্শন — iOS নোটিফিকেশন দেখায় এবং ফোর্স টাচে ক্যাটাগরির সাথে সংযুক্ত বাটনগুলো প্রদর্শন করে
  • হ্যান্ডলিং — ব্যবহারকারী একটি বাটন চাপেন, যা UNUserNotificationCenterDelegate.didReceive response ট্রিগার করে

ক্যাটাগরির অ্যাকশন দুই ধরনের হতে পারে: foreground (অ্যাপ খোলে) এবং background (পটভূমিতে এক্সিকিউট হয়)। পটভূমির অ্যাকশনের জন্য, অ্যাপ UNNotificationActionHandler-এ প্রসেস করতে সীমিত সময় (প্রায় 30 সেকেন্ড) পায়।

ক্যাটাগরি রেজিস্টার করার অপশন

UNNotificationCategory options প্যারামিটারের মাধ্যমে বেশ কয়েকটি অপশন সমর্থন করে: customDismissAction — নোটিফিকেশন সোয়াইপ করলে ইভেন্ট পাওয়া, allowInCarPlay — CarPlay-এ অ্যাকশন দেখানো, hiddenPreviewsBodyPlaceholder — লুকানো প্রিভিউয়ের জন্য কাস্টম প্লেসহোল্ডার টেক্সট।

UNNotificationAction: অ্যাকশনের প্রকার

iOS নোটিফিকেশন ক্যাটাগরির জন্য দুই ধরনের অ্যাকশন প্রদান করে। প্রতিটি প্রকারের নিজস্ব উদ্দেশ্য এবং ব্যবহারকারীর সাথে যোগাযোগের পদ্ধতি রয়েছে।

প্রকারক্লাসবর্ণনাউদাহরণ
সরল অ্যাকশনUNNotificationActionশিরোনাম এবং অপশন (destructive, foreground, authenticationRequired) সহ একটি বাটন“মুছুন”, “দেখুন”
টেক্সট ইনপুটUNTextInputActionএকটি বাটন যা প্লেসহোল্ডার সহ টেক্সট ইনপুট ফিল্ড খোলে“উত্তর দিন”, “মন্তব্য করুন”

UNTextInputAction হল iOS-এর একটি অনন্য ফিচার। যখন ব্যবহারকারী “উত্তর দিন” বাটন চাপেন, সিস্টেম একটি টেক্সট ফিল্ড দেখায় যেখানে ব্যবহারকারী তার উত্তর টাইপ করেন। প্রবেশ করানো টেক্সট অ্যাকশন আইডেন্টিফায়ারের সাথে ডেলিগেটকে পাঠানো হয়। এটি অ্যাপ না খুলেই দ্রুত উত্তর বাস্তবায়নের অনুমতি দেয়।

অ্যাকশন অপশন: options.authenticationRequired — ডিভাইস আনলক করা আবশ্যক, options.destructive — বাটন লাল রঙে হাইলাইট করে (বিপজ্জনক অ্যাকশনের জন্য), options.foreground — চাপার পর অ্যাপ খোলে।

iOS কোডে ক্যাটাগরি সেটআপ করা

ক্যাটাগরি অ্যাপ লঞ্চে রেজিস্টার করা হয়, সাধারণত didFinishLaunchingWithOptions মেথডে। রেজিস্ট্রেশন UNUserNotificationCenter-এর মাধ্যমে, নোটিফিকেশন অনুমতি অনুরোধের পরে করা হয়। ক্যাটাগরি প্রতিটি লঞ্চে আপডেট করা যেতে পারে — পুরোনো সংস্করণ নতুন দিয়ে প্রতিস্থাপিত হয়।

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "উত্তর দিন",
            options: [.foreground],
            textInputButtonTitle: "পাঠান",
            textInputPlaceholder: "বার্তা লিখুন..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "মুছুন",
            options: [.destructive]
        )

        let messageCategory = UNNotificationCategory(
            identifier: "message",
            actions: [replyAction, deleteAction],
            intentIdentifiers: [],
            options: [.customDismissAction]
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([messageCategory])
    }

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        UNUserNotificationCenter.current().delegate = self
        registerNotificationCategories()
        return true
    }
}

ক্যাটাগরি রেজিস্টার করার পর, APNS পেলোডে category = “message” যুক্ত যেকোনো নোটিফিকেশন “উত্তর দিন” এবং “মুছুন” বাটন দেখাবে। ট্যাপ হ্যান্ডলিং userNotificationCenter:didReceive response-এ হয়, যেখানে actionIdentifier নির্ধারণ করে কোন বাটন চাপা হয়েছে।

ডেলিগেটে ট্যাপ হ্যান্ডলিং

যখন ব্যবহারকারী একটি ক্যাটাগরি বাটন চাপেন, iOS UNNotificationResponse অবজেক্ট সহ UNUserNotificationCenterDelegate-কে কল করে। response.actionIdentifier-এ চাপা বাটনের আইডেন্টিফায়ার থাকে, এবং response.notification.request.content.userInfo-এ পেলোড থেকে কাস্টম ডেটা থাকে।

Android চ্যানেল থেকে পার্থক্য

Android Notification Channels-এর সাথে পরিচিত ডেভেলপাররা প্রায়ই সেগুলোকে iOS Notification Categories-এর সাথে গুলিয়ে ফেলেন। একই নাম থাকা সত্ত্বেও, এই মেকানিজমগুলো ভিন্ন কাজ সমাধান করে এবং ভিন্নভাবে কাজ করে।

  • উদ্দেশ্য — Android Channels নোটিফিকেশনের গুরুত্ব এবং দৃশ্যমানতা পরিচালনা করে; iOS Categories ইন্টারঅ্যাকটিভ অ্যাকশন পরিচালনা করে
  • বাধ্যতামূলকতা — Android Channel নোটিফিকেশন দেখানোর জন্য বাধ্যতামূলক; iOS Category ঐচ্ছিক
  • ব্যবহারকারী নিয়ন্ত্রণ — Android ব্যবহারকারীরা সিস্টেম সেটিংসে চ্যানেল কনফিগার করেন; iOS ক্যাটাগরি ব্যবহারকারীর কাছে সরাসরি দৃশ্যমান নয়
  • গ্রুপিং — Android Channels-কে ChannelGroups-এ গ্রুপ করা যেতে পারে; iOS Categories গ্রুপ করা যায় না

উভয় প্ল্যাটফর্মই উভয় মেকানিজম একত্রিত করতে পারে: Android-এ, একটি নোটিফিকেশন NotificationCompat-এর অ্যাকশন সহ একটি চ্যানেলের অন্তর্ভুক্ত হতে পারে, যেখানে iOS-এ, একটি ক্যাটাগরি চ্যানেলের পরিপূরক হয়, যাকে iOS-এ thread-id বলা হয় এবং নোটিফিকেশন সেন্টারে নোটিফিকেশন গ্রুপ করার জন্য ব্যবহৃত হয়।

ক্যাটাগরি সহ APNS পেলোড

নোটিফিকেশন ক্যাটাগরি বাটন সহ প্রদর্শিত হওয়ার জন্য, সার্ভারকে APNS পেলোডে category কী অন্তর্ভুক্ত করতে হবে। এই কী ছাড়া, সিস্টেম জানবে না নোটিফিকেশনে কোন ক্যাটাগরি প্রয়োগ করতে হবে।

json
{
    "aps": {
        "alert": {
            "title": "নতুন বার্তা",
            "body": "আনা: হাই! কেমন আছেন?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

category কীকে ক্লায়েন্টে setNotificationCategories-এর মাধ্যমে রেজিস্টার করা আইডেন্টিফায়ারের সাথে হুবহু মেলাতে হবে। কেস গুরুত্বপূর্ণ — “message” এবং “Message” ভিন্ন ক্যাটাগরি হিসেবে গণ্য হয়। যদি ক্যাটাগরি খুঁজে না পাওয়া যায়, নোটিফিকেশন বাটন ছাড়া দেখা যায়, লগে কোনো ত্রুটি থাকে না।

অজানা ক্যাটাগরি হ্যান্ডলিং

যদি সার্ভার এমন একটি ক্যাটাগরি সহ নোটিফিকেশন পাঠায় যা ক্লায়েন্টে রেজিস্টার করা নেই, iOS ক্যাটাগরি উপেক্ষা করে এবং নোটিফিকেশন বাটন ছাড়া দেখায়। ত্রুটিটি লগ হয় না, এবং অ্যাপ অমিল সম্পর্কে জানতে পারে না। সার্ভার এবং ক্লায়েন্টের মধ্যে ক্যাটাগরির তালিকা সিঙ্ক্রোনাইজ করার পরামর্শ দেওয়া হয়।

ক্যাটাগরি ডিজাইন প্যাটার্ন

iOS-এ নোটিফিকেশন ক্যাটাগরি ডিজাইন করার সময়, একটি ক্যাটাগরি — একটি দৃশ্যকল্প নীতি অনুসরণ করুন। প্রতিটি ক্যাটাগরি একটি নির্দিষ্ট ধরনের ইন্টারঅ্যাকশনের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত: একটি বার্তার উত্তর দেওয়া, একটি অ্যাকশন নিশ্চিত করা বা একটি অনুরোধ প্রত্যাখ্যান করা। একই ক্যাটাগরিতে ভিন্ন ভিন্ন দৃশ্যকল্প মিশ্রিত করবেন না।

সেই দৃশ্যকল্পের জন্য UNTextInputAction ব্যবহার করুন যেখানে ব্যবহারকারীকে অ্যাপ না খুলেই টেক্সট ইনপুট করতে হবে: মেসেজিং উত্তর, মন্তব্য, দ্রুত নোট। টেক্সট অ্যাকশন ব্যস্ততা বাড়ায় — ব্যবহারকারী অ্যাপে 5+ এর পরিবর্তে 2 ট্যাপে একটি অর্থপূর্ণ অ্যাকশন সম্পাদন করে।

বিপজ্জনক অ্যাকশনের (মুছে ফেলা, ব্লক করা) জন্য destructive অপশন ব্যবহার করুন। iOS এই বাটনগুলো লাল রঙে হাইলাইট করবে, ব্যবহারকারীকে অ্যাকশনের অপরিবর্তনীয়তা সম্পর্কে সতর্ক করবে। যে অ্যাকশনগুলোর জন্য ডিভাইস আনলক করা প্রয়োজন (ব্যক্তিগত ডেটা দেখা), সেগুলির জন্য authenticationRequired নির্দিষ্ট করুন।

বিভিন্ন ডিভাইসে ক্যাটাগরি পরীক্ষা করুন: 3D Touch সহ iPhone-এ, 3D Touch ছাড়া iPhone-এ (লং-প্রেস), iPad-এ এবং Mac-এ। Apple প্ল্যাটফর্ম জুড়ে ক্যাটাগরির আচরণ সামান্য ভিন্ন হতে পারে। CarPlay-এ বিশেষ মনোযোগ দিন: ক্যাটাগরি বাটন গাড়ির স্ক্রিনে দেখা যায় এবং চালকের নিরাপত্তার জন্য ন্যূনতম টেক্সট সহ ডিজাইন করা উচিত।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

iOS-এ কতগুলি ক্যাটাগরি রেজিস্টার করা যেতে পারে?

কোনো সীমা নেই — iOS UNNotificationCategory-এর সংখ্যার উপর কোনো সীমা আরোপ করে না। তবে, বাস্তবে, ডেলিগেট হ্যান্ডলিং জটিল না করতে 10–15-এর বেশি ক্যাটাগরি ব্যবহার না করার পরামর্শ দেওয়া হয়। প্রতিটি ক্যাটাগরিতে সর্বোচ্চ 4টি অ্যাকশন (বাটন) থাকতে পারে। 4টির বেশি অ্যাকশন সিস্টেম উপেক্ষা করে।

ক্যাটাগরি বাটনের ট্যাপ কীভাবে হ্যান্ডল করবেন?

UNUserNotificationCenterDelegate প্রোটোকল এবং didReceive মেথড ইমপ্লিমেন্ট করুন। response.actionIdentifier চেক করুন: UNNotificationDismissActionIdentifier — খারিজ করতে সোয়াইপ, UNNotificationDefaultActionIdentifier — বডিতে ট্যাপ, অথবা আপনার কাস্টম বাটন আইডেন্টিফায়ার। টেক্সট ইনপুট বাটনের জন্য, টেক্সট response.userText-এর মাধ্যমে উপলব্ধ।

category কীভাবে thread-id থেকে আলাদা?

Category — নোটিফিকেশনের জন্য ইন্টারঅ্যাকটিভ অ্যাকশন (বাটন) নির্ধারণ করে। Thread-id — নোটিফিকেশন সেন্টারে নোটিফিকেশনকে বিষয় অনুযায়ী গ্রুপ করে। উভয় কী APNS পেলোডে নির্দিষ্ট করা হয়। Category এবং thread-id সম্পর্কিত নয়: একটি নোটিফিকেশনে ক্যাটাগরি থাকতে পারে কিন্তু thread-id নাও থাকতে পারে, এবং এর বিপরীতও হতে পারে।

ক্যাটাগরি কি macOS-এ কাজ করে?

হ্যাঁ, UNNotificationCategory macOS 10.14+ (Mojave)-এ UserNotifications ফ্রেমওয়ার্ক ব্যবহার করা অ্যাপে সমর্থিত। macOS-এ ক্যাটাগরির আচরণ iOS-এর মতো: নোটিফিকেশনে ক্লিক করলে বাটন দেখানো হয়, এবং হ্যান্ডলিং UNUserNotificationCenterDelegate-এর মাধ্যমে হয়।

প্রত্যেক লঞ্চে কি ক্যাটাগরি আপডেট করা প্রয়োজন?

সুপারিশ করা হয় setNotificationCategories-এর মাধ্যমে প্রতিটি অ্যাপ লঞ্চে ক্যাটাগরি রেজিস্টার করা। সিস্টেম প্রতিটি কলেই পুরোনো ক্যাটাগরি সেট নতুন দিয়ে প্রতিস্থাপন করে। যদি আপনি আপডেট না করেন, ক্যাটাগরি লঞ্চের মধ্যে টিকে থাকে, কিন্তু যখন কোড পরিবর্তন হয়, পুরোনো ক্যাটাগরি অপ্রত্যাশিত আচরণের কারণ হতে পারে।

সারসংক্ষেপ

  • Notification Category — পুশ নোটিফিকেশনে ইন্টারঅ্যাকটিভ অ্যাকশন যোগ করার iOS মেকানিজম
  • UNNotificationCategory — একটি ক্লাস যা আইডেন্টিফায়ার, UNNotificationAction-এর অ্যারে এবং অপশন একত্রিত করে
  • UNTextInputAction — অ্যাপ না খুলেই দ্রুত উত্তরের জন্য টেক্সট ইনপুট ফিল্ড সহ অ্যাকশন
  • APNS পেলোড — aps ডিকশনারির category কী নোটিফিকেশনকে রেজিস্টার করা ক্যাটাগরির সাথে সংযুক্ত করে
  • সর্বোচ্চ 4টি অ্যাকশন — প্রতি ক্যাটাগরিতে সর্বোচ্চ বাটন, বাকিগুলো সিস্টেম উপেক্ষা করে
  • অ্যাকশন অপশন — foreground (অ্যাপ খুলুন), destructive (লাল বাটন), authenticationRequired
  • Android থেকে পার্থক্য — iOS Category অ্যাকশন পরিচালনা করে, Android Channel গুরুত্ব এবং শব্দ পরিচালনা করে

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

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

আরও পড়ুন