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().
अगर आपको चैनल की कोई ऐसी सेटिंग मिलती है जो आपके ऐप्लिकेशन के लिए तय किए गए व्यवहार को रोकती है, तो उपयोगकर्ता को उसे बदलने का सुझाव दिया जा सकता है. साथ ही, चैनल की सेटिंग खोलने के लिए कोई कार्रवाई उपलब्ध कराई जा सकती है. इसके बारे में अगले सेक्शन में बताया गया है.
सूचना चैनल की सेटिंग खोलें
सूचना चैनल बनाने के बाद, प्रोग्राम के हिसाब से सूचना चैनल के विज़ुअल और ऑडियो के व्यवहार को नहीं बदला जा सकता. सिर्फ़ उपयोगकर्ता, सिस्टम की सेटिंग में जाकर चैनल के काम करने के तरीके में बदलाव कर सकता है. अपने उपयोगकर्ताओं को इन सूचना सेटिंग का तुरंत ऐक्सेस देने के लिए, अपने ऐप्लिकेशन के सेटिंग यूज़र इंटरफ़ेस (यूआई) में एक आइटम जोड़ें, जो इन सिस्टम सेटिंग को खोलता है.
Intent का इस्तेमाल करके, सूचना चैनलों के लिए सिस्टम सेटिंग खोली जा सकती हैं. यह ACTION_CHANNEL_NOTIFICATION_SETTINGS कार्रवाई का इस्तेमाल करता है.
उदाहरण के लिए, यहां दिए गए सैंपल कोड से पता चलता है कि किसी उपयोगकर्ता को सूचना चैनल की सेटिंग पर कैसे रीडायरेक्ट किया जा सकता है:
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() को कॉल किया जा सकता है.
चैनल को सूचना मैनेजर में सबमिट करने के बाद, सूचना चैनल और ग्रुप के बीच के असोसिएशन को नहीं बदला जा सकता.