बबल का इस्तेमाल करके, उपयोगकर्ताओं को बातचीत में हिस्सा लेने की सुविधा दें

बबल की मदद से, उपयोगकर्ता आसानी से बातचीत देख सकते हैं और उसमें हिस्सा ले सकते हैं.

पहली इमेज. चैट बबल.

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

जब डिवाइस लॉक होता है या हमेशा चालू रहने वाला डिसप्ले चालू होता है, तो बबल इस तरह दिखते हैं नोटिफ़िकेशन भी मिलते हैं.

बबल्स ऐसी सुविधा है जिससे ऑप्ट-आउट किया जा सकता है. जब कोई ऐप्लिकेशन अपना पहला बबल दिखाता है, तो अनुमति वाले डायलॉग बॉक्स में दो विकल्प होते हैं:

  • अपने ऐप्लिकेशन के सभी बबल्स को ब्लॉक करें. सूचनाएं ब्लॉक नहीं की गई हैं, लेकिन उन्हें कभी भी बबल के तौर पर नहीं दिखते.
  • अपने ऐप्लिकेशन के सभी बबल को अनुमति दें. इस ऐप्लिकेशन से सभी सूचनाएं भेजी गई हैं BubbleMetaData, बबल के तौर पर दिखते हैं.

बबल एपीआई

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

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

यहां दिया गया कोड, बबल को लागू करने का तरीका बताता है:

<activity
  android:name=".bubbles.BubbleActivity"
  android:theme="@style/AppTheme.NoActionBar"
  android:label="@string/title_activity_bubble"
  android:allowEmbedded="true"
  android:resizeableActivity="true"
/>

अगर आपका ऐप्लिकेशन, एक ही तरह के कई बबल दिखाता है, जैसे कि एक से ज़्यादा चैट यदि आप अलग-अलग संपर्कों के साथ बातचीत करते हैं, तो गतिविधि एक से ज़्यादा इंस्टेंस न रखें. Android 10 और इससे पहले के वर्शन वाले डिवाइसों पर, सूचनाओं को बबल के रूप में तब तक नहीं दिखाया जाता, जब तक कि आप खास तौर पर इसकी सेटिंग documentLaunchMode से "always". Android 11 और इसके बाद के वर्शन में, आपको इस मान को सेट करें, क्योंकि सिस्टम सभी बातचीत को अपने-आप सेट कर देता है' "always" के लिए documentLaunchMode.

बबल भेजने के लिए, यह तरीका अपनाएं:

  1. सूचना बनाएं आम तौर पर करते हैं.
  2. BubbleMetadata.Builder(PendingIntent, Icon) पर कॉल करें या BubbleMetadata.Builder(String) BubbleMetadata ऑब्जेक्ट बनाने के लिए.
  3. इस्तेमाल की जाने वाली चीज़ें setBubbleMetadata() सूचना में मेटाडेटा जोड़ने के लिए.
  4. अगर Android 11 या उसके बाद के वर्शन को टारगेट कर रहे हैं, तो पक्का करें कि बबल मेटाडेटा या सूचना में शेयर करने का शॉर्टकट दिखता है.

यह तरीका नीचे दिए गए उदाहरण में दिखाया गया है:

Kotlin

// Create a bubble intent.
val target = Intent(context, BubbleActivity::class.java)
val bubbleIntent = PendingIntent.getActivity(context, 0, target, 0 /* flags */)
val category = "com.example.category.IMG_SHARE_TARGET"

val chatPartner = Person.Builder()
    .setName("Chat partner")
    .setImportant(true)
    .build()

// Create a sharing shortcut.
val shortcutId = generateShortcutId()
val shortcut =
   ShortcutInfo.Builder(mContext, shortcutId)
       .setCategories(setOf(category))
       .setIntent(Intent(Intent.ACTION_DEFAULT))
       .setLongLived(true)
       .setShortLabel(chatPartner.name)
       .build()

// Create a bubble metadata.
val bubbleData = Notification.BubbleMetadata.Builder(bubbleIntent,
            Icon.createWithResource(context, R.drawable.icon))
    .setDesiredHeight(600)
    .build()

// Create a notification, referencing the sharing shortcut.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setBubbleMetadata(bubbleData)
    .setShortcutId(shortcutId)
    .addPerson(chatPartner)

Java

// Create a bubble intent.
Intent target = new Intent(mContext, BubbleActivity.class);
PendingIntent bubbleIntent =
    PendingIntent.getActivity(mContext, 0, target, 0 /* flags */);

private val CATEGORY_TEXT_SHARE_TARGET =
    "com.example.category.IMG_SHARE_TARGET"

Person chatPartner = new Person.Builder()
        .setName("Chat partner")
        .setImportant(true)
        .build();

// Create a sharing shortcut.
private String shortcutId = generateShortcutId();
ShortcutInfo shortcut =
   new ShortcutInfo.Builder(mContext, shortcutId)
       .setCategories(Collections.singleton(CATEGORY_TEXT_SHARE_TARGET))
       .setIntent(Intent(Intent.ACTION_DEFAULT))
       .setLongLived(true)
       .setShortLabel(chatPartner.getName())
       .build();

// Create a bubble metadata.
Notification.BubbleMetadata bubbleData =
    new Notification.BubbleMetadata.Builder(bubbleIntent,
            Icon.createWithResource(context, R.drawable.icon))
        .setDesiredHeight(600)
        .build();

// Create a notification, referencing the sharing shortcut.
Notification.Builder builder =
    new Notification.Builder(mContext, CHANNEL_ID)
        .setContentIntent(contentIntent)
        .setSmallIcon(smallIcon)
        .setBubbleMetadata(bubbleData)
        .setShortcutId(shortcutId)
        .addPerson(chatPartner);

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

बड़ा किया गया बबल बनाएं

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

यहां कुछ तरीके दिए गए हैं, जिनका इस्तेमाल करके फ़्लैग सेट किए जा सकते हैं. इन तरीकों से ये व्यवहार चालू हो सकते हैं: setAutoExpandBubble() और setSuppressNotification().

यहां दिए गए उदाहरण में, बबल को अपने-आप कॉन्फ़िगर करने का तरीका बताया गया है विस्तृत स्थिति में:

Kotlin

val bubbleMetadata = Notification.BubbleMetadata.Builder()
    .setDesiredHeight(600)
    .setIntent(bubbleIntent)
    .setAutoExpandBubble(true)
    .setSuppressNotification(true)
    .build()

Java

Notification.BubbleMetadata bubbleData =
    new Notification.BubbleMetadata.Builder()
        .setDesiredHeight(600)
        .setIntent(bubbleIntent)
        .setAutoExpandBubble(true)
        .setSuppressNotification(true)
        .build();

बबल कॉन्टेंट की लाइफ़साइकल

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

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

बबल दिखने पर

उपयोगकर्ता के लिए रुकावटों को कम करने के लिए, बबल्स सिर्फ़ कुछ स्क्रीन के नीचे ही दिखते हैं हालात.

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

  • सूचना में, MessagingStyle और इसमें Person जोड़ा गया.
  • सूचना एक कॉल से है Service.startForeground इसमें शामिल है category में से CATEGORY_CALL और में Person जोड़ा गया है.
  • सूचना भेजे जाने के दौरान, ऐप्लिकेशन फ़ोरग्राउंड में हो.

अगर इनमें से कोई भी शर्त पूरी नहीं होती है, तो एक सूचना के बजाय सूचना बबल.

बबल्स से गतिविधियां लॉन्च करना

जब कोई बबल कोई नई गतिविधि लॉन्च करता है, तो नई गतिविधि या तो लॉन्च हो जाती है उसी टास्क और उसी बबल वाली विंडो में या किसी नए टास्क में इसे लॉन्च करने वाले बबल को छोटा करके देखें.

बबल वाली टास्क में ही कोई नई गतिविधि लॉन्च करने के लिए: 1. इंटेंट लॉन्च करते समय, गतिविधि के कॉन्टेक्स्ट का इस्तेमाल करें, activity.startActivity(intent), और 1. इंटेंट पर FLAG_ACTIVITY_NEW_TASK फ़्लैग सेट न करें.

अगर ऐसा नहीं है, तो नई गतिविधि एक नए टास्क में शुरू हो जाएगी और बबल छोटा किया गया.

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

सबसे सही तरीके

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

जब छोटे किए गए बबल को अपडेट किया गया मैसेज मिलता है, तो बबल में एक बैज दिखता है नहीं पढ़े गए मैसेज को दिखाने के लिए आइकॉन. जब उपयोगकर्ता तो यह तरीका अपनाएं:

  • अपडेट करें सूचना को रोकने के लिए BubbleMetadata. कॉल करें BubbleMetadata.Builder.setSuppressNotification(). ऐसा करने पर, बैज आइकॉन हट जाता है और पता चलता है कि उपयोगकर्ता ने मैसेज के साथ इंटरैक्ट किया है.
  • शुरू Notification.Builder.setOnlyAlertOnce() BubbleMetadata के साथ होने वाली आवाज़ या वाइब्रेशन को बंद करने के लिए, true पर अपडेट.

सैंपल ऐप्लिकेशन

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