सूचनाओं का ग्रुप बनाना

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

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

पहली इमेज. छोटा किया गया (ऊपर) और बड़ा किया गया (नीचे) सूचना ग्रुप.

सूचना ग्रुप का इस्तेमाल तब करें, जब आपके इस्तेमाल के उदाहरण के लिए ये सभी शर्तें पूरी हों:

  • बच्चों के लिए सूचनाएं पूरी जानकारी वाली होती हैं. इन्हें ग्रुप की खास जानकारी के बिना, अलग-अलग दिखाया जा सकता है.

  • बच्चे की सूचनाएं अलग से दिखाने का फ़ायदा है. जैसे:

    • इन पर कार्रवाई की जा सकती है और हर सूचना के लिए खास कार्रवाइयां की जा सकती हैं.

    • उपयोगकर्ता के लिए हर सूचना में ज़्यादा जानकारी मौजूद है.

अगर आपकी सूचनाएं ऊपर दी गई शर्तों को पूरा नहीं करती हैं, तो एक ही बातचीत में कई अपडेट दिखाने के लिए, नई जानकारी के साथ मौजूदा सूचना अपडेट करें या मैसेज की शैली में सूचना बनाने के बारे में सोचें.

ग्रुप बनाना और उसमें सूचना जोड़ना

सूचना ग्रुप बनाने के लिए, ग्रुप के लिए एक यूनीक आइडेंटिफ़ायर स्ट्रिंग तय करें. इसके बाद, ग्रुप में आपको जो सूचनाएं चाहिए उनके लिए, ग्रुप का नाम डालकर setGroup() को कॉल करें. उदाहरण के लिए:

Kotlin

val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"

val newMessageNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build()

Java

String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

डिफ़ॉल्ट रूप से, सूचनाओं को पोस्ट किए जाने के समय के हिसाब से क्रम में लगाया जाता है. हालांकि, setSortKey() को कॉल करके, सूचनाओं का क्रम बदला जा सकता है.

अगर किसी सूचना के ग्रुप की चेतावनियों को किसी अलग सूचना से हैंडल करना ज़रूरी हो, तो कॉल करें setGroupAlertBehavior() उदाहरण के लिए, अगर आपको सिर्फ़ अपने ग्रुप की खास जानकारी चाहिए, तो ग्रुप में शामिल सभी बच्चों के लिए ग्रुप अलर्ट व्यवहार GROUP_ALERT_SUMMARY होना चाहिए. अन्य विकल्पों में, GROUP_ALERT_ALL और GROUP_ALERT_CHILDREN शामिल हैं.

ग्रुप की खास जानकारी सेट करें

ग्रुप की गई सूचनाओं में एक अतिरिक्त सूचना होनी चाहिए, जो ग्रुप की खास जानकारी के तौर पर काम करती है. ग्रुप की गई सूचनाएं पाने की सुविधा चालू करने के लिए, आपको ग्रुप की खास जानकारी सेट करनी होगी. ग्रुप की इस खास जानकारी में, ग्रुप की हर सूचना का कुछ टेक्स्ट शामिल होना चाहिए. इससे उपयोगकर्ता को यह समझने में मदद मिलती है कि ग्रुप में क्या है. ग्रुप की खास जानकारी किस तरह दिखेगी, यह Android वर्शन पर निर्भर करता है:

  • Android 7.0 (एपीआई लेवल 24) से पहले के वर्शन पर, सूचनाओं का नेस्ट किया गया ग्रुप नहीं दिखाया जा सकता. ऐसे में, सिस्टम सिर्फ़ आपके ग्रुप की खास जानकारी वाली सूचना दिखाता है और बाकी सभी सूचनाओं को छिपा देता है. आपका ऐप्लिकेशन खोलने के लिए, उपयोगकर्ता ग्रुप की खास जानकारी वाली सूचना पर टैप कर सकता है.

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

भले ही, Android के नए वर्शन में आपके डिज़ाइन किया गया ग्रुप की खास जानकारी वाला टेक्स्ट न दिखे, ग्रुप में सूचनाएं पाने की सुविधा चालू करने के लिए, आपको मैन्युअल तरीके से खास जानकारी सेट करनी होगी. ग्रुप की खास जानकारी देने वाला व्यवहार, कुछ डिवाइस टाइप पर अलग-अलग हो सकता है, जैसे कि पहने जाने वाले डिवाइस. ग्रुप की खास जानकारी में रिच कॉन्टेंट सेट करने से, सभी डिवाइसों और वर्शन पर बेहतर अनुभव मिलता है.

ग्रुप की खास जानकारी जोड़ने के लिए, यह तरीका अपनाएं:

  1. ग्रुप की जानकारी के साथ एक नई सूचना बनाएं. आम तौर पर, इनबॉक्स स्टाइल की सूचना का इस्तेमाल करके ऐसा करना सबसे अच्छा होता है.

  2. setGroup() को कॉल करके, ग्रुप में खास जानकारी वाली सूचना जोड़ें.

  3. setGroupSummary(true) को कॉल करके बताएं कि इसे ग्रुप की खास जानकारी के तौर पर इस्तेमाल किया जाना चाहिए.

नीचे दिया गया कोड, ग्रुप की खास जानकारी बनाने का उदाहरण दिखाता है:

Kotlin

// Use constant ID for notifications used as group summary.
val SUMMARY_ID = 0
val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"

val newMessageNotification1 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject1.getSummary())
        .setContentText("You will not believe...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build()

val newMessageNotification2 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject2.getSummary())
        .setContentText("Please join us to celebrate the...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build()

val summaryNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle(emailObject.getSummary())
        // Set content text to support devices running API level < 24.
        .setContentText("Two new messages")
        .setSmallIcon(R.drawable.ic_notify_summary_status)
        // Build summary info into InboxStyle template.
        .setStyle(NotificationCompat.InboxStyle()
                .addLine("Alex Faarborg Check this out")
                .addLine("Jeff Chang Launch Party")
                .setBigContentTitle("2 new messages")
                .setSummaryText("janedoe@example.com"))
        // Specify which group this notification belongs to.
        .setGroup(GROUP_KEY_WORK_EMAIL)
        // Set this notification as the summary for the group.
        .setGroupSummary(true)
        .build()

NotificationManagerCompat.from(this).apply {
    notify(emailNotificationId1, newMessageNotification1)
    notify(emailNotificationId2, newMessageNotification2)
    notify(SUMMARY_ID, summaryNotification)
}

Java

// Use constant ID for notifications used as group summary.
int SUMMARY_ID = 0;
String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification1 =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject1.getSummary())
        .setContentText("You will not believe...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

Notification newMessageNotification2 =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject2.getSummary())
        .setContentText("Please join us to celebrate the...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

Notification summaryNotification =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle(emailObject.getSummary())
        // Set content text to support devices running API level < 24.
        .setContentText("Two new messages")
        .setSmallIcon(R.drawable.ic_notify_summary_status)
        // Build summary info into InboxStyle template.
        .setStyle(new NotificationCompat.InboxStyle()
                .addLine("Alex Faarborg  Check this out")
                .addLine("Jeff Chang    Launch Party")
                .setBigContentTitle("2 new messages")
                .setSummaryText("janedoe@example.com"))
        // Specify which group this notification belongs to.
        .setGroup(GROUP_KEY_WORK_EMAIL)
        // Set this notification as the summary for the group.
        .setGroupSummary(true)
        .build();

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(emailNotificationId1, newMessageNotification1);
notificationManager.notify(emailNotificationId2, newMessageNotification2);
notificationManager.notify(SUMMARY_ID, summaryNotification);

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

सूचनाओं का इस्तेमाल करने वाले सैंपल कोड के लिए, Android की सूचनाओं का सैंपल देखें .

अपने-आप ग्रुप बनाने की सुविधा

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

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