Notification Channel — bu nima, qanday turlari bor va Android-da qanday ishlaydi

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

Notification Channel (bildirishnoma kanali) — bu Android-ning 8.0 (API 26) versiyasida joriy qilingan mexanizm bo'lib, u bildirishnomalarni toifalarga guruhlaydi va foydalanuvchiga ularning xatti-harakatlari ustidan nazorat beradi. Har bir kanal o'zi orqali yuborilgan barcha bildirishnomalar uchun muhimlik darajasini, ovozni, tebranishni va vizual ko'rinishni belgilaydi. Android Developers ma'lumotlariga ko'ra, NotificationChannel Android 8+ da barcha bildirishnomalar uchun majburiydir — usiz bildirishnomalar ko'rsatilmaydi.

Asosiy fikrlar

  • Notification Channel — bildirishnomalar guruhining xatti-harakatini boshqaradigan Android 8+ bildirishnoma toifasi
  • Majburiylik — Android 8+ da har bir bildirishnoma kanalga ega bo'lishi kerak, aks holda u ko'rsatilmaydi
  • Importance Level — kanalning muhimlik darajasi (IMPORTANCE_HIGH, DEFAULT, LOW, MIN) ko'rsatish usulini belgilaydi
  • Foydalanuvchi boshqaruvi — foydalanuvchi har bir kanalni tizim sozlamalarida alohida sozlashi mumkin
  • Kanal guruhlari — NotificationChannelGroup kanallarni sozlamalar interfeysida vizual birlashtiradi

Notification Channel nima?

Notification Channel — Android 8+ (Oreo) da bir xil turdagi bildirishnomalar uchun mantiqiy konteynerdir. Dasturchi noyob ID bilan kanal yaratadi, uning parametrlarini o'rnatadi va keyin har bir bildirishnomani ushbu kanalni ko'rsatib yuboradi. Bitta kanaldagi barcha bildirishnomalar uning sozlamalarini meros qilib oladi.

Android 8 dan oldin bildirishnomalarni boshqarish ikkilik edi: hammasi yoki hech narsa. Foydalanuvchi faqat ilovaning barcha bildirishnomalarini butunlay o'chirib qo'yishi mumkin edi. Kanallar bu muammoni hal qildi: endi reklama bildirishnomalarini o'chirib, do'stlardan kelgan xabarlarni saqlab qolish mumkin.

Kanal yaratilgandan so'ng, uning muhimligi (importance) foydalanuvchi tomonidan istalgan vaqtda Sozlamalar → Ilovalar → Bildirishnomalar orqali o'zgartirilishi mumkin. Dasturchi kanal yaratilgandan keyin importance-ni dasturiy ravishda o'zgartira olmaydi — bu Android xavfsizlik cheklovidir.

Kanallarning majburiyligi

Android 8+ da har bir bildirishnoma NotificationChannel orqali yuborilishi kerak. Agar ilova kanalsiz bildirishnoma ko'rsatishga urinsa — tizim uni indamay e'tiborsiz qoldiradi. Istisno — kutubxona tomonidan avtomatik yaratilgan standart kanal bilan NotificationCompat orqali bildirishnomalar.

Android-da bildirishnoma kanallari qanday ishlaydi?

Bildirishnoma kanali NotificationChannel sinfi orqali yaratilganda o'rnatiladigan parametrlar to'plami bilan belgilanadi. Asosiy parametr — bildirishnomaning foydalanuvchi bilan o'zaro ta'sirini belgilaydigan importance darajasi (importance level).

  • Kanal ID-si — noyob satr (masalan, “messages”), har bir bildirishnoma yuborishda ishlatiladi
  • Kanal nomi — o'qiladigan nom, sozlamalarda foydalanuvchiga ko'rsatiladi
  • Tavsif — kanalning maqsadini tushuntirish, sozlamalarda nom ostida ko'rsatiladi
  • Importance — IMPORTANCE_NONE dan IMPORTANCE_HIGH gacha daraja, ko'rsatish usulini belgilaydi
  • Ovoz va tebranish — yaratishda har bir kanal uchun alohida sozlanadi

Yaratilgandan so'ng, kanal tizim bildirishnoma sozlamalarida paydo bo'ladi. Foydalanuvchi importance-ni o'zgartirishi, ovozni, tebranishni o'chirishi yoki kanalni butunlay bloklashi mumkin. Barcha o'zgarishlar keyingi bildirishnomalar uchun darhol kuchga kiradi.

Kanal konfiguratsiya parametrlari

NotificationChannel yaratishda quyidagilarni sozlash mumkin: ovoz (maxsus yoki tizim), tebranish (naqsh va davomiylik), yorug'lik indikatori (LED rangi), belgi (setShowBadge), qulflangan ekranda ko'rinish (setLockscreenVisibility) va Bezovta qilmaslik rejimi (setBypassDnd). Ushbu parametrlar kanal yaratishda mustahkamlanadi va keyinchalik faqat foydalanuvchi tomonidan o'zgartirilishi mumkin.

Importance Level: taqqoslash jadvali

Muhimlik darajasi (importance) — kanalning asosiy parametridir. U bildirishnomaning ovoz chiqarishini, ekranda paydo bo'lishini yoki shunchaki soyaga joylashishini belgilaydi. Muhimlikni ustuvorlik bilan adashtirmang — importance kanal tomonidan o'rnatiladi, ustuvorlik (setPriority) esa Android 8+ da e'tiborga olinmaydi.

DarajaDoimiyXatti-harakatOvoz
HIGHIMPORTANCE_HIGH (4)Heads-up bannerni ko'rsatadi, pardada paydo bo'ladiHa
DEFAULTIMPORTANCE_DEFAULT (3)Pardada paydo bo'ladi, heads-upsizHa
LOWIMPORTANCE_LOW (2)Ovozsiz pardada paydo bo'ladiYo'q
MINIMPORTANCE_MIN (1)Faqat soyada, ovoz va tebranishsizYo'q
NONEIMPORTANCE_NONE (0)Umuman ko'rsatilmaydiYo'q

Aksariyat foydalanuvchi stsenariylari uchun IMPORTANCE_DEFAULT (3) dan foydalaning — bildirishnoma pardada ovoz bilan paydo bo'ladi, lekin ochiladigan bannersiz. IMPORTANCE_HIGH dan faqat muhim hodisalar uchun foydalaning: kiruvchi qo'ng'iroq, suhbatdoshdan xabar, taymer bilan eslatma.

Android kodida kanal yaratish

Kanal bir marta — ilova ishga tushirilganda yoki birinchi foydalanishda yaratiladi. Eng yaxshi amaliyot — barcha kanallarni ilova ishga tushirilganda, Application.onCreate metodida yaratish. Mavjud kanalni qayta yaratish xavfsizdir — kanal allaqachon mavjud bo'lsa, Android so'rovni e'tiborsiz qoldiradi.

kotlin
class App : Application() {

    override fun onCreate() {
        super.onCreate()
        createNotificationChannels()
    }

    private fun createNotificationChannels() {
        val messagesChannel = NotificationChannel(
            CHANNEL_MESSAGES,
            "Xabarlar",
            NotificationManager.IMPORTANCE_HIGH
        ).apply {
            description = "Yangi xabarlar haqida bildirishnomalar"
            enableVibration = true
            setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
        }

        val promoChannel = NotificationChannel(
            CHANNEL_PROMO,
            "Aksiyalar va yangiliklar",
            NotificationManager.IMPORTANCE_LOW
        ).apply {
            description = "Marketing bildirishnomalari va maxsus takliflar"
            setShowBadge(false)
        }

        val manager = getSystemService(NotificationManager::class.java)
        manager.createNotificationChannel(messagesChannel)
        manager.createNotificationChannel(promoChannel)
    }

    companion object {
        const val CHANNEL_MESSAGES = "messages"
        const val CHANNEL_PROMO = "promo"
    }
}

Bildirishnoma yuborishda kanal ID-sini setChannelId (NotificationCompat uchun) yoki Notification.Builder konstruktorida ko'rsating. Belgilangan ID bilan kanal mavjud bo'lmasa — bildirishnoma ko'rsatilmaydi, lekin xato yuz bermaydi.

Kanallarni boshqarish va tahrirlash

Android kanallarni dasturiy boshqarish uchun bir nechta API-larni taqdim etadi: ro'yxatni olish, o'chirish va joriy sozlamalarni tekshirish. Kanalni o'chirish uning barcha bildirishnomalarini tizim tomonidan tarixdan o'chirilishiga olib keladi.

kotlin
val manager =
    getSystemService(NotificationManager::class.java)

// Barcha kanallar ro'yxatini olish
val channels = manager.getNotificationChannels()
channels.forEach { channel ->
    Log.d("Kanallar", "${channel.id}: ${channel.importance}")
}

// Joriy importance ni bilish (foydalanuvchi o'zgartirgan bo'lishi mumkin)
val channel = manager.getNotificationChannel(CHANNEL_MESSAGES)
if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
    // Foydalanuvchi kanalni o'chirgan
    suggestEnablingChannel()
}

// Kanalni o'chirish
manager.deleteNotificationChannel(CHANNEL_PROMO)

Kanal yaratilgandan so'ng, dasturchi uning importance-ni dasturiy ravishda o'zgartira olmaydi — bu Android-ning foydalanuvchini suiiste'moldan himoya qilish cheklovidir. Agar kanalning muhimligini o'zgartirish kerak bo'lsa, boshqa ID bilan yangi kanal yarating va bildirishnomalarni ko'chiring.

Importance o'zgarishida migratsiya

Agar mavjud kanalning muhimligini o'zgartirish talab etilsa, boshqa ID bilan (masalan, “messages_v2”) yangi kanal yarating va unga bildirishnomalar yuborishni boshlang. Eski kanalni deleteNotificationChannel orqali o'chirish mumkin — uning barcha bildirishnomalari tarixdan o'chiriladi. Foydalanuvchini migratsiya haqida ilova interfeysi orqali ogohlantiring, shunda u sozlamalarini yo'qotmasin.

Kanal guruhlari (NotificationChannelGroup)

NotificationChannelGroup bir nechta kanallarni Android sozlamalar interfeysida bitta vizual guruhga birlashtiradi. Guruhlar ilova 5+ kanaldan foydalanganda foydalanuvchiga yo'nalishni topishga yordam beradi: masalan, “Ijtimoiy”, “Tizim”, “Marketing”.

Guruh createNotificationChannelGroup orqali yaratiladi va setGroup metodi orqali kanalga uzatiladi. Guruhni o'chirish uning barcha kanallarini ham o'chiradi. Har bir kanal faqat bitta guruhga tegishli bo'lishi mumkin.

Amalda, kanal guruhlari 3 dan ortiq kanalga ega ilovalar uchun tavsiya etiladi. Ular sozlamalarda navigatsiyani soddalashtiradi va foydalanuvchining kanallar ro'yxatini tushunmay turib barcha bildirishnomalarni birdan o'chirib qo'yish ehtimolini kamaytiradi.

Kanal guruhini yaratish namunasi

Guruh noyob ID va nom bilan createNotificationChannelGroup orqali yaratiladi. Keyin har bir kanal setGroup metodi orqali guruhga bog'lanadi. Tizim sozlamalarida guruh sarlavhali bo'lim sifatida ko'rsatiladi, uning ostida ushbu guruhning barcha kanallari joylashgan. Agar guruh o'chirilsa, uning barcha kanallari ham tizim tomonidan avtomatik ravishda tiklanmasdan o'chiriladi.

Kanal dizayn namunalari

Bildirishnoma kanallarining to'g'ri loyihalanishi foydalanuvchi tajribasi va saqlab qolishga bevosita ta'sir qiladi. Asosiy namuna — uch muhimlik darajasi: xabarlar va qo'ng'iroqlar uchun muhim kanal (IMPORTANCE_HIGH), umumiy bildirishnomalar uchun standart (IMPORTANCE_DEFAULT) va marketing va yangiliklar uchun sokin (IMPORTANCE_LOW). Bunday gradatsiya foydalanuvchiga ortiqcha yuklamasdan tushunarli tanlov beradi.

Ikkinchi namuna — funksional modul bo'yicha kanal. Ilovaning har bir katta moduli (chat, buyurtmalar, lent, marketing) o'z kanalini oladi. Agar modullar 5 dan ko'p bo'lsa, ularni NotificationChannelGroup da birlashtiring. Tizim sozlamalarida guruh yashiriladigan elementlarga ega bo'lim sifatida ko'rsatiladi — bu navigatsiyani soddalashtiradi.

Uchinchi namuna — dasturchi uchun kanal. Nosozliklarni tuzatish va xizmat bildirishnomalari uchun IMPORTANCE_MIN bilan alohida kanal yarating. Foydalanuvchilar ularni pardada ko'rmaydilar, ammo dasturchi adb orqali jurnallarni tahlil qilishi mumkin. Ishlab chiqarishda bu kanal o'chirilishi yoki sozlamalardagi Intent orqali interfeysdan yashirilishi mumkin.

To'rtinchi namuna — kanallar haqida qayta aloqa. Foydalanuvchiga interfeysda qaysi kanallar faol va ularning joriy importance darajasi qanday ekanligini ko'rsating. Android 8+ da kanal holatini getNotificationChannel orqali olish va agar kanal o'chirilgan bo'lsa, foydalanuvchiga sozlamalarni o'zgartirishni taklif qilish mumkin. Bu, ayniqsa, ilovaning muhim funksiyalari uchun muhimdir.

Ko'p beriladigan savollar

Android 8+ da kanal yaratilmasa nima bo'ladi?

Bildirishnoma ko'rsatilmaydi na pardada, na soyada. Tizim notify() chaqiruvini indamay e'tiborsiz qoldiradi. Istisnolar: NotificationCompat dan foydalanganda kutubxona standart kanal yaratadi, ammo uning importance har doim DEFAULT bo'ladi. Har doim o'z kanallaringizni yaratish tavsiya etiladi.

Kanalni yaratgandan keyin o'zgartirish mumkinmi?

Kanalning nomini, tavsifini va ovozini o'zgartirish mumkin. Importance ni o'zgartirish mumkin emas — bu qaror dasturchidan tizim tomonidan himoyalangan. Agar muhimlikni oshirish kerak bo'lsa — boshqa ID bilan yangi kanal yarating va uni yangi bildirishnomalar uchun ishlating. Foydalanuvchi importance-ni istalgan vaqtda o'zgartirishi mumkin.

Foydalanuvchi kanalni o'chirganligini qanday tekshirish mumkin?

getNotificationChannel dan foydalaning va importance-ni tekshiring: agar qiymat IMPORTANCE_NONE bo'lsa, kanal o'chirilgan. Shuningdek, kanalning tizim sozlamalarini Intent orqali ochishingiz mumkin: Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS app_package va channel_id parametrlari bilan.

Bitta ilovada nechta kanal yaratish mumkin?

Hech qanday cheklov yo'q — Android kanallar soniga limit qo'ymaydi. Biroq, foydalanuvchini tanlov bilan ortiqcha yuklamaslik uchun 5–10 dan ortiq kanal yaratmaslik tavsiya etiladi. Eng maqbul minimum 2–3 kanal: muhim bildirishnomalar, oddiy bildirishnomalar va marketing.

Kanallar Android 7 va undan eski versiyalarda ishlaydimi?

Android 7.1 (API 25) va undan eski versiyalarda kanallar qo'llab-quvvatlanmaydi. NotificationChannel sinfi faqat API 26 dan boshlab mavjud. Orqaga moslik uchun NotificationCompat dan foydalaning va kanal yaratishni if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) shartiga o'rab qo'ying.

Xulosa

  • Notification Channel — Android 8+ bildirishnomalarni guruhlash mexanizmi, ko'rsatish uchun majburiy
  • Importance — NONE dan HIGH gacha daraja, ovoz, heads-up va pardada ko'rinishni belgilaydi
  • Boshqaruv — foydalanuvchi istalgan vaqtda kanalning importance va ovozini o'zgartirishi mumkin
  • Yaratish — kanal NotificationManager.createNotificationChannel orqali bir marta yaratiladi
  • Importance o'zgarmasligi — dasturchi kanal yaratilgandan keyin muhimlikni oshira olmaydi
  • Guruhlar — NotificationChannelGroup kanallarni sozlamalarda qulay navigatsiya uchun birlashtiradi
  • Moslik — Android 7 da NotificationCompat dan SDK versiyasini tekshirib foydalaning

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