Notification Channel (नॉटिफिकेशन चैनल) एक Android तंत्र है, जो संस्करण 8.0 (API 26) में पेश किया गया, जो नॉटिफिकेशन को श्रेणियों में विभाजित करता है और उपयोगकर्ता को उनके व्यवहार पर नियंत्रण देता है। प्रत्येक चैनल उसके माध्यम से भेजे गए सभी नॉटिफिकेशन के लिए महत्व स्तर, ध्वनि, कंपन और दृश्य स्वरूप निर्धारित करता है। Android Developers के अनुसार, NotificationChannel Android 8+ पर सभी नॉटिफिकेशन के लिए अनिवार्य है — इसके बिना नॉटिफिकेशन प्रदर्शित नहीं होते।
मुख्य बातें
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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें