Android 8.0 (एपीआई लेवल 26) से, सभी सूचनाओं को किसी चैनल को असाइन करना ज़रूरी है. हर चैनल के लिए, विज़ुअल और ऑडियो से जुड़ी सेटिंग सेट की जा सकती है. ये सेटिंग, उस चैनल की सभी सूचनाओं पर लागू होती हैं. उपयोगकर्ता इन सेटिंग को बदल सकते हैं. साथ ही, यह तय कर सकते हैं कि आपके ऐप्लिकेशन के कौनसे सूचना चैनल, उपयोगकर्ताओं के लिए दखलअंदाज़ी करने वाले या दिखने वाले हो सकते हैं.
Android 8.0 में चैनलों और सूचनाओं से जुड़ी अन्य सुविधाओं के बारे में खास जानकारी पाने के लिए, यह वीडियो देखें.
सूचना चैनलों के लिए उपयोगकर्ता सेटिंग, सिस्टम सेटिंग में हर ऐप्लिकेशन के लिए उपलब्ध होती हैं. इन्हें पहली इमेज में दिखाया गया है.
सूचना चैनल बनाने के बाद, सूचनाओं के व्यवहार में बदलाव नहीं किया जा सकता. इस दौरान, उपयोगकर्ता के पास पूरा कंट्रोल होता है. हालांकि, अब भी किसी चैनल का नाम और ब्यौरा बदला जा सकता है.
आपको जिस तरह की सूचनाएं भेजनी हैं उनके लिए अलग-अलग चैनल बनाएं. उपयोगकर्ताओं की पसंद के हिसाब से सूचना चैनल भी बनाए जा सकते हैं. उदाहरण के लिए, मैसेजिंग ऐप्लिकेशन में किसी उपयोगकर्ता की ओर से बनाए गए हर बातचीत ग्रुप के लिए, सूचना पाने के अलग-अलग चैनल सेट अप किए जा सकते हैं.
Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन को टारगेट करते समय, आपको एक या उससे ज़्यादा सूचना चैनल लागू करने होंगे. अगर आपका targetSdkVersion 25 या इससे पहले के वर्शन पर सेट है, तो Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन पर चलने वाले डिवाइसों पर आपका ऐप्लिकेशन, Android 7.1 (एपीआई लेवल 25) या इससे पहले के वर्शन पर चलने वाले डिवाइसों की तरह ही काम करेगा.
सूचना का चैनल बनाना
सूचना का चैनल बनाने के लिए, यह तरीका अपनाएं:
NotificationChannelऑब्जेक्ट बनाएं. इसमें यूनीक चैनल आईडी, उपयोगकर्ता को दिखने वाला नाम, और अहमियत का लेवल शामिल करें.उपयोगकर्ता को सिस्टम सेटिंग में
setDescription()के साथ दिखने वाला ब्यौरा भी दिया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.सूचना के चैनल को
createNotificationChannel()में पास करके रजिस्टर करें.
यहां दिए गए उदाहरण में, सूचना का चैनल बनाने और रजिस्टर करने का तरीका बताया गया है:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel. val importance = NotificationManager.IMPORTANCE_DEFAULT val mChannel = NotificationChannel(CHANNEL_ID, name, importance) mChannel.description = descriptionText // Register the channel with the system. You can't change the importance // or other notification behaviors after this. val notificationManager = context.getSystemService(NotificationManager::class.java) notificationManager?.createNotificationChannel(mChannel) }
मौजूदा सूचना का चैनल को उसकी मूल वैल्यू के साथ फिर से बनाने से कोई कार्रवाई नहीं होती. इसलिए, ऐप्लिकेशन शुरू करते समय इस कोड को कॉल करना सुरक्षित है.
डिफ़ॉल्ट रूप से, किसी चैनल पर पोस्ट की गई सभी सूचनाएं, NotificationManagerCompat क्लास के अहमियत के लेवल के हिसाब से तय किए गए विज़ुअल और सुनने से जुड़े व्यवहार का इस्तेमाल करती हैं. जैसे, IMPORTANCE_DEFAULT या IMPORTANCE_HIGH. अहमियत के लेवल के बारे में ज़्यादा जानने के लिए, अगला सेक्शन देखें.
अगर आपको चैनल के लिए सूचना पाने की डिफ़ॉल्ट सेटिंग को और भी ज़्यादा पसंद के मुताबिक बनाना है, तो NotificationChannel पर enableLights(), setLightColor(), और setVibrationPattern() जैसे तरीकों का इस्तेमाल किया जा सकता है. ध्यान रखें कि चैनल बनाने के बाद, इन सेटिंग को बदला नहीं जा सकता. साथ ही, उपयोगकर्ता के पास यह तय करने का अधिकार होता है कि ये सेटिंग चालू रहेंगी या नहीं.
createNotificationChannels() को कॉल करके, एक ही ऑपरेशन में कई सूचना चैनल भी बनाए जा सकते हैं.
अहमियत का लेवल सेट करना
चैनल की अहमियत के हिसाब से, चैनल में पोस्ट की गई सभी सूचनाओं के लिए रुकावट का लेवल तय होता है. इसे NotificationChannel कंस्ट्रक्टर में बताएं. इसके लिए, पांच में से किसी एक लेवल का इस्तेमाल करें. ये लेवल IMPORTANCE_NONE(0) से लेकर IMPORTANCE_HIGH(4) तक होते हैं.
Android 7.1 (एपीआई लेवल 25) या इससे पहले के वर्शन वाले डिवाइसों पर सूचनाएं पाने के लिए, आपको हर सूचना के लिए setPriority() को कॉल करना होगा. इसके लिए, NotificationCompat क्लास से प्राथमिकता वाला कॉन्स्टेंट इस्तेमाल करें.
अहमियत (NotificationManager.IMPORTANCE_*) और प्राथमिकता (NotificationCompat.PRIORITY_*) कॉन्स्टेंट, उपयोगकर्ता को दिखने वाले अहमियत के विकल्पों से मैप होते हैं. जैसा कि इस टेबल में दिखाया गया है.
| उपयोगकर्ता को दिखने वाला अहमियत का लेवल | अहमियत (Android 8.0 और इसके बाद के वर्शन) | प्राथमिकता (Android 7.1 और इससे पहले के वर्शन) |
|---|---|---|
| ज़रूरी इस तरह की सूचनाएं सुनाई देती हैं और स्क्रीन पर सबसे ऊपर सूचना देने वाले कार्ड के तौर पर दिखती हैं. |
IMPORTANCE_HIGH |
PRIORITY_HIGH या PRIORITY_MAX |
| ज़्यादा आवाज़ करता है. |
IMPORTANCE_DEFAULT |
PRIORITY_DEFAULT |
| मीडियम कोई आवाज़ नहीं आती. |
IMPORTANCE_LOW |
PRIORITY_LOW |
| बिना आवाज़ वाली सूचनाएं इन सूचनाओं से किसी तरह की आवाज़ नहीं होती और ये स्टेटस बार में नहीं दिखती हैं. |
IMPORTANCE_MIN |
PRIORITY_MIN |
| कोई नहीं इस विकल्प को चुनने पर, सूचना आने पर कोई आवाज़ नहीं होती. साथ ही, यह स्टेटस बार या सूचना पैनल में नहीं दिखती. |
IMPORTANCE_NONE |
N/A |
सभी सूचनाएं, उनकी अहमियत के हिसाब से, सिस्टम यूज़र इंटरफ़ेस (यूआई) की ऐसी जगहों पर दिखती हैं जहां वे काम में रुकावट नहीं डालतीं. जैसे, सूचना पैनल में और लॉन्चर आइकॉन पर बैज के तौर पर. हालांकि, सूचना बैज के दिखने के तरीके में बदलाव किया जा सकता है.
चैनल को NotificationManager में सबमिट करने के बाद, अहमियत के लेवल में बदलाव नहीं किया जा सकता. हालांकि, उपयोगकर्ता आपके ऐप्लिकेशन के चैनलों के लिए अपनी प्राथमिकताएं कभी भी बदल सकता है.
सूचनाओं के लिए सही प्राथमिकता का लेवल चुनने के बारे में जानकारी पाने के लिए, सूचनाओं के डिज़ाइन से जुड़ी गाइड में "प्राथमिकता के लेवल" लेख पढ़ें.
सूचना चैनल की सेटिंग पढ़ना
उपयोगकर्ता, सूचना चैनलों की सेटिंग में बदलाव कर सकते हैं. इनमें वाइब्रेशन और सूचना की आवाज़ जैसे व्यवहार शामिल हैं. अगर आपको यह जानना है कि किसी उपयोगकर्ता ने आपके सूचना चैनलों पर कौनसी सेटिंग लागू की हैं, तो यह तरीका अपनाएं:
getNotificationChannel()याgetNotificationChannels()को कॉल करके,NotificationChannelऑब्जेक्ट पाएं.चैनल की सेटिंग के बारे में क्वेरी करें. जैसे,
getVibrationPattern(),getSound(), औरgetImportance().
अगर आपको चैनल की कोई ऐसी सेटिंग मिलती है जिससे आपके ऐप्लिकेशन के काम करने के तरीके पर असर पड़ता है, तो उपयोगकर्ता को उस सेटिंग को बदलने का सुझाव दिया जा सकता है. साथ ही, चैनल की सेटिंग खोलने का विकल्प दिया जा सकता है. इसके बारे में अगले सेक्शन में बताया गया है.
सूचना चैनल की सेटिंग खोलें
सूचना चैनल बनाने के बाद, सूचना चैनल के विज़ुअल और सुनने से जुड़े व्यवहारों को प्रोग्राम के हिसाब से नहीं बदला जा सकता. सिर्फ़ उपयोगकर्ता, सिस्टम सेटिंग में जाकर चैनल के व्यवहार में बदलाव कर सकता है. उपयोगकर्ताओं को सूचना सेटिंग का तुरंत ऐक्सेस देने के लिए, अपने ऐप्लिकेशन की सेटिंग यूज़र इंटरफ़ेस (यूआई) में एक आइटम जोड़ें. इससे सिस्टम सेटिंग खुलती हैं.
ACTION_CHANNEL_NOTIFICATION_SETTINGS ऐक्शन का इस्तेमाल करने वाले Intent की मदद से, सूचना चैनलों के लिए सिस्टम सेटिंग खोली जा सकती हैं.
उदाहरण के लिए, यहां दिए गए सैंपल कोड में दिखाया गया है कि किसी उपयोगकर्ता को सूचना चैनल की सेटिंग पर कैसे रीडायरेक्ट किया जा सकता है:
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName) putExtra(Settings.EXTRA_CHANNEL_ID, CHANNEL_ID) } Button(onClick = { context.startActivity(intent) }) { Text("Open Channel Settings") }
ध्यान दें कि इंटेंट के लिए दो अतिरिक्त चीज़ों की ज़रूरत होती है. इनमें आपके ऐप्लिकेशन के पैकेज का नाम (इसे ऐप्लिकेशन आईडी भी कहा जाता है) और बदलाव करने के लिए चैनल शामिल है.
सूचना का चैनल मिटाना
deleteNotificationChannel() पर कॉल करके, सूचना के चैनल मिटाए जा सकते हैं.
नीचे दिए गए सैंपल कोड में, इस प्रोसेस को पूरा करने का तरीका बताया गया है:
val notificationManager = ContextCompat.getSystemService<NotificationManager>(context, NotificationManager::class.java) notificationManager?.deleteNotificationChannel(channelId)
सूचना का चैनल ग्रुप बनाना
अगर आपको सेटिंग के यूज़र इंटरफ़ेस (यूआई) में अपने चैनलों को और व्यवस्थित करना है, तो चैनल ग्रुप बनाएं. अगर आपका ऐप्लिकेशन कई उपयोगकर्ता खातों के साथ काम करता है, तो यह तरीका सबसे सही है. इसकी मदद से, हर खाते के लिए सूचना चैनल ग्रुप बनाया जा सकता है. चैनल ग्रुप की मदद से, उपयोगकर्ता एक जैसे नाम वाले कई सूचना चैनलों के बीच फ़र्क़ कर सकते हैं और उन्हें कंट्रोल कर सकते हैं.
उदाहरण के लिए, किसी सोशल नेटवर्किंग ऐप्लिकेशन में निजी और ऑफ़िस वाले खातों के लिए सहायता शामिल हो सकती है. इस स्थिति में, हर खाते के लिए एक जैसे फ़ंक्शन और नामों वाले कई सूचना चैनल की ज़रूरत पड़ सकती है. जैसे:
दो चैनलों वाला निजी खाता:
नई टिप्पणियां
पोस्ट के सुझाव
दो चैनलों वाला एक कारोबारी खाता:
नई टिप्पणियां
पोस्ट के सुझाव
सूचना चैनलों को हर खाते के लिए ग्रुप में व्यवस्थित करने से, उपयोगकर्ता उनके बीच अंतर कर पाते हैं.
हर सूचना चैनल ग्रुप के लिए एक आईडी की ज़रूरत होती है. यह आईडी, आपके पैकेज में यूनीक होना चाहिए. साथ ही, इसका नाम ऐसा होना चाहिए जो उपयोगकर्ता को दिखे. यहां दिए गए स्निपेट में, सूचना चैनल ग्रुप बनाने का तरीका बताया गया है.
fun createNotificationChannelGroup(context: Context, groupId: String, groupName: String) { val notificationManager = ContextCompat.getSystemService(context, NotificationManager::class.java) notificationManager?.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName)) }
नया ग्रुप बनाने के बाद, ग्रुप के साथ नया NotificationChannel ऑब्जेक्ट जोड़ने के लिए, setGroup() को कॉल किया जा सकता है.
चैनल को सूचना मैनेजर में सबमिट करने के बाद, सूचना चैनल और ग्रुप के बीच के असोसिएशन को बदला नहीं जा सकता.