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 نوٹیفکیشن چینلز سے واقف ڈویلپرز اکثر انہیں iOS نوٹیفکیشن کیٹیگریز کے ساتھ الجھا دیتے ہیں۔ ایک جیسے نام کے باوجود، یہ میکانزم مختلف کاموں کو حل کرتے ہیں اور مختلف طریقے سے کام کرتے ہیں۔

  • مقصد — Android چینلز نوٹیفکیشنز کی اہمیت اور نمائش کا انتظام کرتے ہیں؛ iOS کیٹیگریز انٹرایکٹو ایکشنز کا انتظام کرتی ہیں
  • لازمی — Android چینل نوٹیفکیشن دکھانے کے لیے لازمی ہے؛ iOS کیٹیگری اختیاری ہے
  • صارف کا کنٹرول — Android صارف سسٹم سیٹنگز میں چینلز ترتیب دیتے ہیں؛ iOS کیٹیگریز صارف کو براہ راست نظر نہیں آتیں
  • گروپ بندی — Android چینلز کو ChannelGroups میں گروپ کیا جا سکتا ہے؛ iOS کیٹیگریز گروپ نہیں ہوتیں

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

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

مزید پڑھیں