Notification Category: nima, qanday kategoriyalar bor va iOS-da qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-03-20 O'qish vaqti: 8 daq

Notification Category (bildirishnoma kategoriyasi) — iOS-ning push bildirishnomalarini turiga qarab guruhlash va ularga sozlanishi mumkin bo'lgan harakatlarni biriktirish mexanizmi. Kategoriya 3D Touch yoki bildirishnomaga uzoq bosishda qaysi tugmalar ko'rsatilishini, shuningdek tizimning ushbu turdagi kiruvchi bildirishnomalarni qanday qayta ishlashini aniqlaydi. Apple Developer Documentation ga ko'ra, UNNotificationCategory UNUserNotificationCenter da ro'yxatdan o'tkaziladi va APNS yukidagi category maydoni orqali bildirishnoma bilan bog'lanadi.

Asosiy ma'lumotlar

  • Notification Category — push bildirishnomalarini tasniflash va ularga harakatlar qo'shish uchun iOS mexanizmi
  • UNNotificationCategory — UNNotificationAction to'plami bilan kategoriyani ro'yxatdan o'tkazuvchi sinf
  • Harakatlar — bildirishnoma ostidagi tugmalar: matn kiritish uchun UNTextInputAction, bosish uchun UNNotificationAction
  • Bog'lanish — kategoriya APNS yukida aps lug'atidagi category kaliti orqali ko'rsatiladi
  • Android dan farqi — iOS Category harakatlarni boshqaradi, Android Channel esa muhimlik va ovozni

iOS da Notification Category nima?

Notification Category — iOS (8.0 versiyasidan boshlab) ning dasturchiga push bildirishnomalarini tasniflash va ularga interaktiv harakatlar qo'shish imkonini beruvchi funksiyasidir. Foydalanuvchi bildirishnomani olganida va uni kuch bilan (3D Touch) yoki uzoq bosganda, kategoriya tomonidan belgilangan tugmalar paydo bo'ladi.

Kategoriya UNNotificationCategory obyekti orqali ro'yxatdan o'tkaziladi, u identifikator, harakatlar massivi va ixtiyoriy ko'rsatish parametrlarini o'z ichiga oladi. Tizim APNS yukidan kategoriya identifikatoridan foydalanib ro'yxatdan o'tgan kategoriyani qidiradi va tegishli harakatlarni ko'rsatadi.

Android Notification Channel dan farqli o'laroq, iOS Category muhimlik, ovoz yoki tebranishni boshqarmaydi. Uning yagona vazifasi bildirishnoma uchun interaktiv imkoniyatlar ta'minlashdir: javob, tasdiqlash, bekor qilish yoki matn kiritish tugmalari.

Kategoriyalarning majburiyligi

Kategoriyalar iOS da push bildirishnomalarini ko'rsatish uchun majburiy emas. Bildirishnoma har qanday holatda ko'rinadi — kategoriya ro'yxatdan o'tgan bo'lsa tugmalar bilan, aks holda tugmalarsiz. Kategoriyalar faqat bildirishnomalarga interaktivlik qo'shish uchun kerak.

Bildirishnoma kategoriyalari qanday ishlaydi?

Kategoriya mexanizmi to'rt bosqichdan iborat: kategoriyani mijoz tomonda ro'yxatdan o'tkazish, APNS yukini kategoriya bilan jo'natish, kategoriyani tizim tomonidan tanib olish va foydalanuvchi harakatini qayta ishlash.

  • Ro'yxatdan o'tkazish — ilova UNNotificationCategory ni harakatlar massivi bilan yaratadi va UNUserNotificationCenter da ro'yxatdan o'tkazadi
  • Jo'natish — server APNS yukiga kategoriya identifikatoriga mos keladigan category kalitini kiritadi
  • Ko'rsatish — iOS bildirishnomani ko'rsatadi va force touch paytida kategoriyaga bog'langan tugmalarni namoyish etadi
  • Qayta ishlash — foydalanuvchi tugmani bosadi, UNUserNotificationCenterDelegate.didReceive response ishga tushadi

Kategoriyadagi harakatlar ikki xil bo'lishi mumkin: foreground (ilovani ochadi) va background (fonda bajariladi). Fon harakatlari uchun ilova UNNotificationActionHandler da qayta ishlash uchun cheklangan vaqt (taxminan 30 soniya) oladi.

Kategoriyani ro'yxatdan o'tkazishda variantlar

UNNotificationCategory options parametri orqali bir nechta variantni qo'llab-quvvatlaydi: customDismissAction — bildirishnomani surishda hodisani olish, allowInCarPlay — CarPlay da harakatlarni ko'rsatish, hiddenPreviewsBodyPlaceholder — yashirin oldindan ko'rishlar uchun maxsus matn. Variantlarni to'g'ri sozlash turli Apple qurilmalarida foydalanuvchi tajribasini yaxshilaydi.

UNNotificationAction: harakat turlari

iOS bildirishnoma kategoriyalari uchun ikki turdagi harakatni taqdim etadi. Har bir tur o'z maqsadi va foydalanuvchi bilan o'zaro aloqa usuliga ega.

TurSinfTavsifMisol
Oddiy harakatUNNotificationActionSarlavha va variantlar bilan tugma (destructive, foreground, authenticationRequired)“O'chirish”, “Ko'rish”
Matn kiritishUNTextInputActionMaslahat bilan matn kiritish maydonini ochuvchi tugma“Javob berish”, “Izoh yozish”

UNTextInputAction — iOS ning noyob imkoniyati. “Javob berish” tugmasini bosganda tizim foydalanuvchi javob yozishi uchun matn maydonini ko'rsatadi. Kiritilgan matn harakat identifikatori bilan birga delegatga uzatiladi. Bu ilovani ochmasdan tezkor javob berish imkonini beradi.

Harakat variantlari: options.authenticationRequired — qurilmani qulfdan chiqarishni talab qiladi, options.destructive — tugmani qizil rang bilan ajratadi (xavfli harakatlar uchun), options.foreground — bosgandan keyin ilovani ochadi.

iOS kodida kategoriyani sozlash

Kategoriyalar ilova ishga tushganda, odatda didFinishLaunchingWithOptions metodida ro'yxatdan o'tkaziladi. Ro'yxatdan o'tkazish UNUserNotificationCenter orqali, bildirishnomalarga ruxsat so'raganidan keyin amalga oshiriladi. Kategoriyalar har bir ishga tushishda yangilanishi mumkin — eski versiyalar yangilari bilan almashtiriladi.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Javob berish",
            options: [.foreground],
            textInputButtonTitle: "Jo'natish",
            textInputPlaceholder: "Xabarni kiriting..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "O'chirish",
            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
    }
}

Kategoriya ro'yxatdan o'tkazilgandan so'ng, APNS yukida category = “message” bo'lgan har bir bildirishnoma “Javob berish” va “O'chirish” tugmalarini ko'rsatadi. Tugma bosilishlarini qayta ishlash userNotificationCenter:didReceive response da amalga oshiriladi, bu erda actionIdentifier qaysi tugma bosilganini aniqlaydi.

Delegatda bosilishni qayta ishlash

Foydalanuvchi kategoriya tugmasini bosganda, iOS UNUserNotificationCenterDelegate delegatini UNNotificationResponse obyekti bilan chaqiradi. response.actionIdentifier bosilgan tugmaning identifikatorini o'z ichiga oladi, response.notification.request.content.userInfo esa APNS yukidan maxsus ma'lumotlarni. UNTextInputAction uchun qo'shimcha ravishda foydalanuvchi kiritgan matn bilan response.userText mavjud.

Android kanallaridan farqlari

Android Notification Channels bilan tanish bo'lgan dasturchilar ko'pincha ularni iOS Notification Categories bilan aralashtirib yuborishadi. O'xshash nomga qaramasdan, bu mexanizmlar turli vazifalarni hal qiladi va turlicha ishlaydi.

  • Maqsad — Android Channels bildirishnomalarning muhimligi va ko'rinishini boshqaradi; iOS Categories — interaktiv harakatlarni
  • Majburiylik — Android Channel bildirishnomani ko'rsatish uchun majburiy; iOS Category ixtiyoriy
  • Foydalanuvchi boshqaruvi — Android foydalanuvchi kanallarni tizim sozlamalarida sozlaydi; iOS kategoriyalari foydalanuvchiga to'g'ridan-to'g'ri ko'rinmaydi
  • Guruhlash — Android Channels guruhlarga birlashtirilishi mumkin (ChannelGroup); iOS Categories guruhlanmaydi

Ikkala platformada ham mexanizmlarni birlashtirish mumkin: Android da bildirishnoma NotificationCompat dan harakatlar bilan kanalga tegishli bo'lishi mumkin, iOS da esa kategoriya iOS da thread-id deb ataluvchi va bildirishnomalar markazida bildirishnomalarni guruhlash uchun xizmat qiluvchi kanallarni to'ldiradi.

Kategoriya bilan APNS yuki

Bildirishnomaning kategoriya tugmalari bilan ko'rsatilishi uchun server APNS yukiga category kalitini kiritishi kerak. Ushbu kalitsiz tizim bildirishnomaga qaysi kategoriyani qo'llashni bilmaydi.

json
{
    "aps": {
        "alert": {
            "title": "Yangi xabar",
            "body": "Anna: Salom! Qalaysiz?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

category kaliti mijoz tomonda setNotificationCategories orqali ro'yxatdan o'tgan identifikator bilan aniq mos kelishi kerak. Harf sezgirligi mavjud — “message” va “Message” turli kategoriyalar hisoblanadi. Agar kategoriya topilmasa, bildirishnoma tugmalarsiz, jurnallarda xatosiz ko'rsatiladi.

Noma'lum kategoriyani qayta ishlash

Agar server mijozda ro'yxatdan o'tmagan category bilan bildirishnoma yuborsa, iOS kategoriyani e'tiborsiz qoldiradi va bildirishnomani tugmalarsiz ko'rsatadi. Xato qayd etilmaydi va ilova nomuvofiqlik haqida bilmaydi. Kategoriyalar ro'yxatini server va mijoz o'rtasida konfiguratsiya fayli orqali sinxronlashtirish va ilovaning har bir yangilanishida tekshirish tavsiya etiladi.

Kategoriyalarni loyihalash naqshlari

iOS bildirishnoma kategoriyalarini loyihalashda bitta kategoriya — bitta ssenariy printsipiga amal qiling. Har bir kategoriya ma'lum bir o'zaro aloqa turiga mos kelishi kerak: xabarga javob, harakatni tasdiqlash, so'rovni rad etish. Turli ssenariylarni bir kategoriyada aralashtirmang — bu foydalanuvchini chalg'itadi va delegatda qayta ishlashni murakkablashtiradi.

UNTextInputAction dan foydalanuvchi ilovani ochmasdan matn kiritishi kerak bo'lgan ssenariylar uchun foydalaning: messenjerlardagi javoblar, sharhlar, tezkor eslatmalar. Matn harakatlari jalb qilishni oshiradi — foydalanuvchi ochiq ilovadagi 5+ o'rniga 2 bosish bilan mazmunli harakat qiladi.

Xavfli harakatlar (o'chirish, bloklash) uchun destructive variantidan foydalaning. iOS bu tugmalarni qizil rang bilan ajratib, foydalanuvchini harakatning qaytarilmasligi haqida ogohlantiradi. Qurilmani qulfdan chiqarishni talab qiladigan harakatlar (shaxsiy ma'lumotlarni ko'rish) uchun authenticationRequired ni o'rnating — tizim bajarishdan oldin Face ID yoki parolni so'raydi.

Kategoriyalarni turli qurilmalarda sinab ko'ring: 3D Touch li iPhone da, 3D Touch siz iPhone da (uzoq bosish), iPad da va Mac da. Kategoriyalarning xatti-harakati turli Apple platformalarida biroz farq qilishi mumkin. Maxsus e'tibor — CarPlay: kategoriya tugmalari avtomobil ekranida ko'rsatiladi, lekin matn kiritish mavjud emas, shuning uchun UNTextInputAction CarPlay da avtomatik ravishda yashiriladi. watchOS da kategoriyalar qo'llab-quvvatlanmaydi — barcha bildirishnomalar harakat tugmalarisiz ko'rsatiladi.

Tez-tez so'raladigan savollar

iOS da nechta kategoriyani ro'yxatdan o'tkazish mumkin?

Hech qanday cheklov yo'q — iOS UNNotificationCategory soniga limit qo'ymaydi. Biroq, amalda delegatda qayta ishlashni murakkablashtirmaslik uchun 10–15 dan oshmaslik tavsiya etiladi. Har bir kategoriya 4 tagacha harakatni (tugmani) o'z ichiga olishi mumkin. 4 dan ortiq harakatlar tizim tomonidan e'tiborga olinmaydi.

Kategoriya tugmasining bosilishini qanday qayta ishlash mumkin?

UNUserNotificationCenterDelegate delegatini va didReceive response metodini amalga oshiring. response.actionIdentifier ni tekshiring: UNNotificationDismissActionIdentifier — o'chirish surish, UNNotificationDefaultActionIdentifier — tanaga bosish, yoki o'zingizning maxsus tugma identifikatoringiz. Matn tugmalari uchun matn response.userText orqali mavjud.

Category thread-id dan nimasi bilan farq qiladi?

Category — bildirishnoma uchun interaktiv harakatlarni (tugmalarni) aniqlaydi. Thread-id — Bildirishnomalar Markazida bildirishnomalarni mavzular bo'yicha guruhlaydi. Ikkala kalit APNS yukida ko'rsatiladi. Category va thread-id bog'liq emas: bildirishnoma kategoriyaga ega bo'lishi mumkin thread-idsiz va aksincha.

Kategoriyalar macOS da ishlaydimi?

Ha, UNNotificationCategory macOS 10.14+ (Mojave) da UserNotifications framework dan foydalanadigan ilovalarda qo'llab-quvvatlanadi. macOS da kategoriyalarning xatti-harakati iOS ga o'xshaydi: bildirishnomani bosganda tugmalar ko'rsatiladi, qayta ishlash UNUserNotificationCenterDelegate orqali amalga oshiriladi.

Kategoriyalarni har bir ishga tushishda yangilash kerakmi?

Ilovaning har bir ishga tushishida setNotificationCategories orqali kategoriyalarni ro'yxatdan o'tkazish tavsiya etiladi. Tizim har bir chaqiruvda eski kategoriyalar to'plamini yangisi bilan almashtiradi. Agar yangilamasangiz, kategoriyalar ishga tushishlar orasida saqlanadi, ammo kod o'zgarganda eski kategoriyalar yangilariga mos kelmasligi mumkin.

Xulosa

  • Notification Category — push bildirishnomalariga interaktiv harakatlar qo'shish uchun iOS mexanizmi
  • UNNotificationCategory — identifikator, UNNotificationAction massivi va variantlarni birlashtiruvchi sinf
  • UNTextInputAction — ilovani ochmasdan tezkor javoblar uchun matn kiritish maydoni bilan harakat
  • APNS yuki — aps lug'atidagi category kaliti bildirishnomani ro'yxatdan o'tgan kategoriya bilan bog'laydi
  • 4 tagacha harakat — bitta kategoriya uchun maksimal tugmalar soni, qolganlari tizim tomonidan e'tiborga olinmaydi
  • Harakat variantlari — foreground (ilovani ochadi), destructive (qizil tugma), authenticationRequired
  • Android dan farqi — iOS Category harakatlar uchun javobgar, Android Channel — muhimlik va ovoz uchun

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing