Notification Channel (اطلاع کا چینل) ایک Android میکانزم ہے، جو ورزن 8.0 (API 26) میں متعارف کرایا گیا، جو اطلاعات کو زمرے کے اعتبار سے گروپ کرتا ہے اور صارف کو ان کے رویے پر قابو دیتا ہے۔ ہر چینل اپنے ذریعے بھیجے گئے تمام اطلاعات کے لیے اہمیت کی سطح، آواز، وبریشن اور بصری ظہور کو متعین کرتا ہے۔ Android Developers کے مطابق، Android 8+ پر تمام اطلاعات کے لیے NotificationChannel لازمی ہے — اس کے بغیر اطلاعات ظاہر نہیں ہوتیں۔
اہم نکات
Notification Channel Android 8+ (Oreo) میں ایک ہی قسم کی اطلاعات کے لیے ایک منطقی کنٹینر ہے۔ ڈیویلپر ایک منفرد ID کے ساتھ ایک چینل بناتا ہے، اس کے پیرامیٹر مقرر کرتا ہے، اور پھر ہر اطلاع کو اس چینل کو متعین کرتے ہوئے بھیجتا ہے۔ ایک ہی چینل میں تمام اطلاعات اس کی ترتیبات وراثت پاتی ہیں۔
Android 8 سے پہلے، اطلاعات کا انتظام دوگنا تھا: سب یا کچھ نہیں۔ صارف صرف ایپ کی تمام اطلاعات کو مکمل طور پر منتهی کر سکتا تھا۔ چینلوں نے یہ مسئلہ حل کیا: اب آپ «اشتہار» کی اطلاعات کو بند کر سکتے ہیں لیکن «دوستوں کے پیغام» کو برقرار رکھ سکتے ہیں۔
ایک چینل بنانے کے بعد، صارف ترتیبات → ایپستر → اطلاعات کے ذریعے کسی بھی وقت اس کی اہمیت کو بدل سکتا ہے۔ ڈیویلپر چینل بنانے کے بعد پروگرامی طور پر اہمیت نہیں بدل سکتا — یہ ایک Android حفاظتی پابندی ہے۔
Android 8+ پر، ہر اطلاع کو NotificationChannel کے ذریعے بھیجا جانا چاہیئے۔ اگر کوئی ایپ بغیر چینل کے اطلاع دیکھانے کی کوشش کرتی ہے، تو سسٹم خاموشی سے اسے نظرانداز کر دیتا ہے۔ ستثنا NotificationCompat کے ذریعے ایک طرف کے چینل کے ساتھ اطلاعات ہیں، جو لائبریری کے ذریعے خودکار طور پر بنایا جاتا ہے۔
ایک اطلاع کا چینل پیرامیٹروں کے ایک سیٹ سے متعین ہوتا ہے جو NotificationChannel کلاس کے ذریعے اسے بناتے وقت مقرر کیے جاتے ہیں۔ اہم پیرامیٹر اہمیت کا درجہ ہے، جو یہ متعین کرتا ہے کہ اطلاع صارف کے ساتھ کیسے باتچیت کرتی ہے۔
تخلیق کے بعد، چینل سسٹم کی اطلاعات کی ترتیبات میں ظاہر ہوتا ہے۔ صارف اہمیت کو بدل سکتا ہے، آواز کو بند کر سکتا ہے، وبریشن کو بند کر سکتا ہے، یا چینل کو مکمل طور پر بلاک کر سکتا ہے۔ تمام تبدیلیاں بعد کی تمام اطلاعات پر فوری اثر کرتی ہیں۔
NotificationChannel بناتے وقت، آپ درج ذیل کو ترتیب دے سکتے ہیں: آواز (کسٹم یا سسٹم)، وبریشن (پیٹرن اور دیرائی)، روشنی کا اشارہ (LED رنگ)، بیج آئیکن (setShowBadge)، لاک اسکرین (setLockscreenVisibility) اور پریشان نہ کریں موڈ (setBypassDnd)۔ یہ پیرامیٹر چینل کی تخلیق کے وقت مقرر کیے جاتے ہیں اور بعد میں صرف صارف هی انہیں بدل سکتا ہے۔
اہمیت کا درجہ ایک چینل کا اہم پیرامیٹر ہے۔ یہ متعین کرتا ہے کہ اطلاع آواز چلائے گی، سکرین پر ظاہر ہوگی، یا محض سایے میں رکھی جائے گی۔ اہمیت کو ترجیح کے ساتھ خلط نہیں کرنا چاہئے — اہمیت چینل کے ذریعے مقرر کی جاتی ہے، اور ترجیح (setPriority) کو Android 8+ پر نظرانداز کیا جاتا ہے۔
| درجہ | مستقل | رویہ | آواز |
|---|---|---|---|
| HIGH | IMPORTANCE_HIGH (4) | heads-up بینر دیکھاتا ہے، سایے میں ظاہر ہوتا ہے | ہاں |
| DEFAULT | IMPORTANCE_DEFAULT (3) | سایے میں ظاہر ہوتا ہے، heads-up کے بغیر | ہاں |
| LOW | IMPORTANCE_LOW (2) | آواز کے بغیر سایے میں ظاہر ہوتا ہے | نہیں |
| MIN | IMPORTANCE_MIN (1) | صرف سایے میں، آواز یا وبریشن کے بغیر | نہیں |
| NONE | IMPORTANCE_NONE (0) | بلکل ظاہر نہیں ہوتا | نہیں |
زیادہ تر صارف مناظر کے لیے، IMPORTANCE_DEFAULT (3) استعمال کریں — اطلاع آواز کے ساتھ سایے میں ظاہر ہوگی لیکن پپ-اپ بینر کے بغیر۔ IMPORTANCE_HIGH کو صرف ناگہانی واقعات کے لیے استعمال کریں: آنے والی کال، کسی رابطے سے پیغام، ٹائمر کی یاد دھانی۔
چینل ایک بار بنایا جاتا ہے جب ایپ شروع ہوتی ہے یا پہلی بار استعمال کی جاتی ہے۔ سب سے اچھا طریقہ یہ ہے کہ ایپ کے شروع پر، Application.onCreate میتھڈ میں تمام چینل بنائیں۔ موجودہ چینل کو دوبارہ بنانا محفوظ ہے — اگر چینل پہلے سے موجود ہے تو Android کال کو نظرانداز کر دیتا ہے۔
class App : Application() {
override fun onCreate() {
super.onCreate()
createNotificationChannels()
}
private fun createNotificationChannels() {
val messagesChannel = NotificationChannel(
CHANNEL_MESSAGES,
"پیغامات",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "نئے پیغاموں کی اطلاعات"
enableVibration = true
setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
}
val promoChannel = NotificationChannel(
CHANNEL_PROMO,
"پروموشنز اور خبریں",
NotificationManager.IMPORTANCE_LOW
).apply {
description = "مارکیٹنگ اطلاعات اور خاص پیشکش"
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"
}
}
اطلاع بھیجتے وقت، setChannelId (NotificationCompat کے لیے) یا Notification.Builder کنسٹرکٹر میں چینل ID متعین کریں۔ اگر متعین ID کا چینل موجود نہیں ہے، تو اطلاع ظاہر نہیں ہوگی، لیکن کوئی غلطی نہیں آئے گی۔
Android چینلوں کے پروگرامی انتظام کے لیے کافی APIز فراہم کرتا ہے: فہرست حاصل کرنا، حذف کرنا اور موجودہ ترتیبات چیک کرنا۔ ایک چینل کو حذف کرنے سے اس کی تمام اطلاعات سسٹم کی طاریخ سے ہٹا دی جاتی ہیں۔
val manager =
getSystemService(NotificationManager::class.java)
// تمام چینلوں کی فہرست حاصل کریں
val channels = manager.getNotificationChannels()
channels.forEach { channel ->
Log.d("Channels", "${channel.id}: ${channel.importance}")
}
// موجودہ اہمیت جانیں (هو سکتا ہے صارف نے بدل دی ہو)
val channel = manager.getNotificationChannel(CHANNEL_MESSAGES)
if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
// صارف نے چینل کو منتہی کر دیا
suggestEnablingChannel()
}
// چینل حذف کریں
manager.deleteNotificationChannel(CHANNEL_PROMO)
ایک چینل بننے کے بعد، ڈیویلپر نہیں کر سکتا پروگرامی طور پر اس کی اہمیت کو بدل سکتا ہے — یہ صارف کو بداستمالی سے بچانے کے لیے ایک Android پابندی ہے۔ اگر آپ کو کسی چینل کی اہمیت بدلنی ہے، تو ایک مختلف ID کے ساتھ ایک نیا چینل بنائیں اور اطلاعات کو منتقل کریں۔
اگر آپ کو کسی موجودہ چینل کی اہمیت بدلنی ہے، تو ایک مختلف ID (مثلاً، «messages_v2») کے ساتھ ایک نیا چینل بنائیں اور اس میں اطلاعات بھیجنا شروع کریں۔ پورانے چینل کو deleteNotificationChannel کے ذریعے حذف کیا جا سکتا ہے — اس کی تمام اطلاعات طاریخ سے ہٹا دی جائیں گیں۔ صارف کو ایپ کے انٹرفیس کے ذریعے منتقلی کے بارے میں آگاہ کریں تاکہ وہ اپنی ترتیبات سے محروم نہ ہو۔
NotificationChannelGroup Android کی ترتیبات کے انٹرفیس میں ایک سے زیادہ چینلوں کو ایک بصری گروپ میں مضموم کرتا ہے۔ گروپ صارف کی رہنمائی میں مدد کرتے ہیں جب ایپ 5+ چینل استعمال کرتی ہے: مثلاً، «سماجی»، «سسٹم»، «مارکیٹنگ»۔
ایک گروٰ createNotificationChannelGroup کے ذریعے بنایا جاتا ہے اور setGroup میتھڈ کے ذریعے تخلیق کے وقت چینل کو دیا جاتا ہے۔ ایک گروپ کو حذف کرنے سے اس کے تمام چینل بھی حذف ہو جاتے ہیں۔ ہر چینل صرف ایک گروپ کا حصہ ہو سکتا ہے۔
عملی طور پر، چینل گروپ 3 سے زیادہ چینل والی ایپ کے لیے تجویز کیے جاتے ہیں۔ وہ ترتیبات میں رہنمائی کو آسان بناتے ہیں اور اس امکان کو کم کرتے ہیں کہ صارف چینل کی فہرست کو سمجھے بغیر ایک ساتھ تمام اطلاعات کو منتہی کر دے۔
ایک گروٰ createNotificationChannelGroup کے ذریعے ایک منفرد ID اور نام کے ساتھ بنایا جاتا ہے۔ پھر setGroup میتھڈ کے ذریعے ہر چینل گروپ کو ساؤنپا جاتا ہے۔ سسٹم کی ترتیبات میں، گروٰ ایک سرخی کے ساتھ ایک سیکشن کے طور پر ظاہر ہوتا ہے، جس کے نیچے اس گروپ کے تمام چینل درج ہوتے ہیں۔ اگر کسی گروپ کو حذف کیا جاتا ہے، تو اس کے تمام چینل بھی سسٹم کے ذریعے خودکار طور پر بغیر بحال کی امکان کے ہٹا دیے جاتے ہیں۔
اطلاع کے چینلوں کا مناسب ڈیزائن سیدھے صارف کے تجربے اور برقراری کو متاثر کرتا ہے۔ اهم نمونہ تین اہمیت کے درجہ ہے: پیغاموں اور کالوں کے لیے ناگہانی چینل (IMPORTANCE_HIGH)، عام اطلاعات کے لیے معیاری (IMPORTANCE_DEFAULT)، اور مارکیٹنگ اور خبروں کے لیے خاموش (IMPORTANCE_LOW)۔ یہ درجہ بندی صارف کو بغیر کسی بوجھ کے ایک واضح متخب دیتی ہے۔
دوسرا نمونہ ہے فعلی ماٹیول کے اعتبار سے ایک چینل۔ ایپ کا ہر اهم ماٹیول (چیٹ، آرڈرز، فیڈ، مارکیٹنگ) اپنا چینل رکھتا ہے۔ اگر 5 سے زیادہ ماٹیول ہیں، تو انہیں ایک NotificationChannelGroup میں مضموم کریں۔ سسٹم کی ترتیبات میں، گروٰ ایک سیکشن کے طور پر گر نے والے آئٹم کے ساتھ ظاہر ہوتا ہے — یہ رہنمائی کو آسان بناتا ہے۔
تیسرا نمونہ ایک ڈیویلپر چینل ہے۔ ڈیباگ اور سروس اطلاعات کے لیے IMPORTANCE_MIN کے ساتھ ایک علاحدہ چینل بنائیں۔ صارف انہیں سایے میں نہیں دیکھیں گے، لیکن ڈیویلپر adb کے ذریعے لاگ کا تجزیہ کر سکتا ہے۔ پروڈکشن میں، اس چینل کو ترتیبات میں Intent کے ذریعے حذف یا انٹرفیس سے چھپایا جا سکتا ہے۔
چوتھا نمونہ چینل فیڈبیک ہے۔ صارف کو انٹرفیس میں دیکھائیں کہ کون سے چینل فعال ہیں اور ان کی موجودہ اہمیت کیا ہے۔ Android 8+ پر، آپ getNotificationChannel کے ذریعے چینل کی حالت حاصل کر سکتے ہیں اور اگر چینل منتہی ہے تو صارف کو ترتیبات بدلنے کی پیشکش کر سکتے ہیں۔ یہ ایپ کے ناگہانی فنکشنز کے لیے خاص طور پر اہم ہے۔
اکثر پوچھے جانے والے سوالات
اطلاع ظاہر نہیں ہوگی نہ سایے میں اور نہ ٹرے میں۔ سسٹم خاموشی سے notify() کال کو نظرانداز کر دیتا ہے۔ مستثنیات: NotificationCompat استعمال کرتے وقت، لائبریری ایک طرف کا چینل بناتی ہے، لیکن اس کی اہمیت ہمیشہ DEFAULT ہہیں۔ ہمیشہ اپنے خود کے چینل بنانے کی تجویز دی جاتی ہے۔
آپ بدل سکتے ہیں چینل کا نام، تفصیل اور آواز۔ آپ اہمیت کو نہیں بدل سکتے — یہ فیصلہ ڈیویلپر سے سسٹم کے ذریعے محفوظ ہے۔ اگر آپ کو اہمیت بڑھانی ہے، تو ایک مختلف ID کے ساتھ ایک نیا چینل بنائیں اور نئی اطلاعات کے لیے استعمال کریں۔ صارف کسی بھی وقت اہمیت بدل سکتا ہے۔
getNotificationChannel استعمال کریں اور اہمیت چیک کریں: اگر قیمت IMPORTANCE_NONE ہے، تو چینل منتہی ہے۔ آپ Intent: Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS کے ذریعے app_package اور channel_id پیرامیٹر کے ساتھ چینل کی سسٹم ترتیبات بھی کھول سکتے ہیں۔
کوئی حد نہیں — Android چینلوں کی تعداد پر کوئی حد مقرر نہیں کرتا۔ تاہم، یہ تجویز کی جاتی ہے کہ صارف کو انتخاب سے متھاش نہ کرنے کے لیے 5–10 سے زیادہ چینل نہ بنائے جائیں۔ بہترین کم سے کم 2–3 چینل ہیں: ناگہانی اطلاعات، عام اور مارکیٹنگ۔
Android 7.1 (API 25) اور اس سے نیچے پر، چینل تائید شدہ نہیں ہیں۔ NotificationChannel کلاس صرف API 26 سے دستیاب ہے۔ پیچھے کی مطابقت کے لیے، NotificationCompat استعمال کریں اور چینل کی تخلیق کو ایک شرط میں لپیٹیں: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں