सूचना के चैनल बनाना और उन्हें मैनेज करना

Android 8.0 (एपीआई लेवल 26) से शुरू होने वाली सभी सूचनाएं, चैनल. हर चैनल के लिए, विज़ुअल और सुनने से जुड़ा व्यवहार सेट किया जा सकता है. उस चैनल की सभी सूचनाओं पर लागू होती है. उपयोगकर्ता इन सेटिंग को बदल सकते हैं साथ ही, यह तय किया जा सकता है कि आपके ऐप्लिकेशन के सूचना के कौनसे चैनल रुकावट डालने वाले हो सकते हैं या दृश्य.

चैनलों की खास जानकारी और अन्य सूचनाएं पाने के लिए, यह वीडियो देखें Android 8.0 की सुविधाओं के साथ आता है.

सूचनाओं के चैनल के लिए उपयोगकर्ता सेटिंग, इसमें हर ऐप्लिकेशन के लिए उपलब्ध है जैसा कि पहली इमेज में दिखाया गया है.

पहला डायग्राम. Clock ऐप्लिकेशन के लिए सूचना सेटिंग और उसका कोई चैनल शामिल है.

सूचना चैनल बनाने के बाद, सूचना में बदलाव नहीं किया जा सकता व्यवहार. उपयोगकर्ता के पास उस समय पूरा कंट्रोल होता है. हालांकि, आपको अब भी चैनल का नाम और ब्यौरा बदला जा सकता है.

आपको भेजी जाने वाली हर तरह की सूचना के लिए एक चैनल बनाएं. आप यह भी कर सकते हैं उपयोगकर्ताओं के चुने गए विकल्पों को दिखाने के लिए, सूचना के चैनल बनाना. उदाहरण के लिए, आपके अपने हिसाब से बनाए गए हर बातचीत ग्रुप के लिए, अलग-अलग सूचना चैनल सेट अप कर सकता है मैसेजिंग ऐप्लिकेशन का इस्तेमाल करने वाला कोई व्यक्ति.

Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन को टारगेट करने पर, आपको एक या उससे ज़्यादा सूचना के ज़्यादा चैनल. अगर आपका targetSdkVersion, 25 या इससे कम पर सेट है, जब आपका ऐप्लिकेशन Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलता है, तो वह पहले की तरह ही काम करता है Android 7.1 (एपीआई लेवल 25) या इससे पहले के वर्शन वाले डिवाइसों पर

सूचना का चैनल बनाना

सूचना का चैनल बनाने के लिए, यह तरीका अपनाएं:

  1. किसी NotificationChannel ऑब्जेक्ट यूनीक चैनल आईडी, उपयोगकर्ताओं को दिखने वाला नाम, और अहमियत के लेवल के साथ.

  2. इसके अलावा, यह जानकारी दें कि उपयोगकर्ता को सिस्टम सेटिंग में क्या जानकारी दिखेगी के साथ setDescription().

  3. सूचना चैनल को रजिस्टर करें. इसके लिए, उसे इस पते पर भेजें createNotificationChannel().

यहां दिए गए उदाहरण में, सूचना चैनल बनाने और रजिस्टर करने का तरीका बताया गया है:

Kotlin

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    // Create the NotificationChannel.
    val name = getString(R.string.channel_name)
    val descriptionText = getString(R.string.channel_description)
    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 = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
    notificationManager.createNotificationChannel(mChannel)
}

Java

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is not in the Support Library.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system. You can't change the importance
        // or other notification behaviors after this.
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

किसी मौजूदा सूचना चैनल को उसके मूल मानों के साथ फिर से बनाने से कोई असर नहीं पड़ता कार्रवाई नहीं करनी है, इसलिए ऐप्लिकेशन शुरू करते समय इस कोड को कॉल करना सुरक्षित है.

डिफ़ॉल्ट रूप से, किसी चैनल पर पोस्ट की जाने वाली सभी सूचनाएं विज़ुअल और सुनने से जुड़ा व्यवहार, उसकी अहमियत के लेवल के हिसाब से तय किया जाता है. NotificationManagerCompat क्लास, जैसे कि IMPORTANCE_DEFAULT या IMPORTANCE_HIGH. इस बारे में ज़्यादा जानकारी के लिए, अगला सेक्शन देखें अहमियत के लेवल पर निर्भर करता है.

अगर आपको अपने चैनल पर सूचना पाने के डिफ़ॉल्ट तरीके को अपनी पसंद के मुताबिक बनाना है, तो आप कॉल कर सकते हैं जैसे कि enableLights() setLightColor(), और setVibrationPattern() NotificationChannel को. ध्यान रखें कि चैनल बनाने के बाद, इन सेटिंग को नहीं बदल सकता और उपयोगकर्ता के पास इन सेटिंग को पूरी तरह कंट्रोल करने का विकल्प होता है व्यवहार ऐक्टिव हैं.

आप एक कार्रवाई में इनके ज़रिए कई सूचना चैनल भी बना सकते हैं कॉल किया जा रहा है 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, आप महत्व का स्तर नहीं बदल सकते. हालांकि, उपयोगकर्ता अपनी अपने ऐप्लिकेशन के चैनलों की प्राथमिकताएं देखें.

प्राथमिकता का सही लेवल चुनने के बारे में जानने के लिए, "प्राथमिकता लेवल" में सूचनाओं के लिए डिज़ाइन गाइड.

चैनल की सूचना सेटिंग देखें

उपयोगकर्ता, सूचना के चैनलों की सेटिंग में बदलाव कर सकते हैं. इसमें उनके व्यवहार की सेटिंग भी शामिल हैं जैसे कि वाइब्रेशन और अलर्ट की आवाज़. अगर आपको किसी उपयोगकर्ता की सेटिंग के बारे में जानना हो सूचना पाने के तरीकों पर लागू होती है, तो यह तरीका अपनाएं:

  1. इस नंबर पर कॉल करके, NotificationChannel ऑब्जेक्ट पाएं getNotificationChannel() या getNotificationChannels().

  2. चैनल की खास सेटिंग के लिए क्वेरी करें, जैसे कि getVibrationPattern() getSound(), और getImportance().

अगर आपको किसी चैनल की ऐसी सेटिंग का पता चलता है जो आपके हिसाब से, उम्मीद के मुताबिक काम नहीं कर रही है हैं, तो आप उपयोगकर्ता को इसे बदलने का सुझाव दे सकते हैं और चैनल की सेटिंग खोलें, जैसा कि अगले सेक्शन में दिखाया गया है.

सूचना चैनल की सेटिंग खोलें

सूचना चैनल बनाने के बाद, सूचना में बदलाव नहीं किया जा सकता विज़ुअल और ऑडियो से जुड़े व्यवहार को प्रोग्रामैटिक तरीके से मैनेज करता है. केवल उपयोगकर्ता कर सकता है तो चैनल के काम करने के तरीके में बदलाव किया जा सकता है. अपने उपयोगकर्ताओं को इन सूचना सेटिंग को आसानी से एक्सेस कर सकते हैं, तो अपने एप्लिकेशन के सेटिंग यूज़र इंटरफ़ेस (यूआई) जिससे ये सिस्टम सेटिंग खुलती हैं.

सूचना वाले चैनलों के लिए सिस्टम सेटिंग को खोला जा सकता है. इसके लिए, Intent जो ACTION_CHANNEL_NOTIFICATION_SETTINGS कार्रवाई.

उदाहरण के लिए, नीचे दिया गया सैंपल कोड यह बताता है कि किसी उपयोगकर्ता को सूचना चैनल की सेटिंग:

Kotlin

val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply {
    putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
    putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId())
}
startActivity(intent)

Java

Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
intent.putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId());
startActivity(intent);

ध्यान दें कि इंटेंट में आपके ऐप्लिकेशन के पैकेज का नाम बताने वाली दो अतिरिक्त चीज़ों की ज़रूरत है (इसे ऐप्लिकेशन आईडी भी कहा जाता है) और चैनल में बदलाव करना होता है.

सूचना देने वाले चैनल को मिटाना

कॉल करके, सूचना वाले चैनलों को मिटाया जा सकता है deleteNotificationChannel(). यह सैंपल कोड इस प्रोसेस को पूरा करने का तरीका बताता है:

Kotlin

// The id of the channel.
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val id: String = "my_channel_01"
notificationManager.deleteNotificationChannel(id)

Java

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
notificationManager.deleteNotificationChannel(id);

सूचनाओं के लिए चैनल ग्रुप बनाना

अगर आपको सेटिंग यूज़र इंटरफ़ेस (यूआई) में अपने चैनलों के दिखने के तरीके को और व्यवस्थित करना है, चैनल ग्रुप बनाए जा सकते हैं. यह तब अच्छा आइडिया है, जब आपका ऐप्लिकेशन 'Google शॉपिंग' पर कई उपयोगकर्ता खाते, जैसे कि वर्क प्रोफ़ाइल में बदल सकते हैं, क्योंकि इससे आपको काम करने की सूचना पाने के लिए चैनल ग्रुप बनाएं. इस तरह से, उपयोगकर्ता आसानी से और एक जैसे नाम वाले कई सूचना चैनलों को कंट्रोल कर सकते हैं.

दूसरा डायग्राम. इसके साथ सूचना चैनल सेटिंग निजी और काम से जुड़े खातों के लिए ग्रुप बनाएं.

उदाहरण के लिए, किसी सोशल नेटवर्किंग ऐप्लिकेशन में निजी और ऑफ़िस के काम से जुड़ी मदद खाते. इस स्थिति में, हर खाते के लिए एक से ज़्यादा सूचनाओं की ज़रूरत पड़ सकती है एक जैसे फ़ंक्शन और नाम वाले चैनल:

  • दो चैनलों वाला निजी खाता:

    • नई टिप्पणियां

    • सुझाव पोस्ट करें

  • दो चैनलों वाला कारोबारी खाता:

    • नई टिप्पणियां

    • सुझाव पोस्ट करें

सूचनाओं के चैनलों को ग्रुप में रखने से, उपयोगकर्ता हर खाते के लिए करते हैं.

हर सूचना चैनल ग्रुप के लिए एक आईडी होना ज़रूरी है. यह आईडी, आपके चैनल ग्रुप में और उपयोगकर्ता को दिखाई देने वाला नाम दिखाई देगा. नीचे दिए गए स्निपेट में बताया गया है कि सूचनाओं वाला चैनल ग्रुप बनाने के लिए.

Kotlin

// The id of the group.
val groupId = "my_group_01"
// The user-visible name of the group.
val groupName = getString(R.string.group_name)
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))

Java

// The id of the group.
String groupId = "my_group_01";
// The user-visible name of the group.
CharSequence groupName = getString(R.string.group_name);
NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannelGroup(new NotificationChannelGroup(groupId, groupName));

नया ग्रुप बनाने के बाद, आपके पास कॉल करने का विकल्प होता है setGroup() इस ग्रुप के साथ एक नया NotificationChannel ऑब्जेक्ट असोसिएट करने के लिए.

सूचना मैनेजर को चैनल सबमिट करने के बाद, उसे बदला नहीं जा सकता सूचना का चैनल और ग्रुप.