Messaging और People API की मदद से, किसी Android ऐप्लिकेशन में चैट से जुड़ी सुविधाएं जोड़ना

1. शुरू करने से पहले

मैसेजिंग ऐप्लिकेशन बनाना मुश्किल है. हालांकि, सभी उपयोगकर्ताओं को अलग-अलग अनुभव मिलता है, लेकिन Android Messages और People API की सुविधा देता है. इन एपीआई की मदद से, लोगों के साथ चैट करने का अनुभव बेहतर और आसान हो जाता है.

इस कोडलैब में, आपको इन एपीआई का इस्तेमाल करने का तरीका पता है. इससे, Android पर चैट ऐप्लिकेशन के लिए एक दिलचस्प नेटवर्क बनाया जा सकता है. आपने JetChat ऐप्लिकेशन को बढ़ाया है. यह एक ऐसा चैट ऐप्लिकेशन है जो बिना किसी रुकावट के काम करता है. साथ ही, यह ऐसे चैट ऐप्लिकेशन का भी इस्तेमाल करता है जो Jetpack का इस्तेमाल करता है.

ज़रूरी शर्तें

  • Android डेवलपमेंट की बुनियादी जानकारी
  • सूचनाओं के बारे में बुनियादी जानकारी

आपको क्या बनाना होगा

लंबे समय तक चलने वाला JetChat ऐप्लिकेशन, जो ये काम करता है:

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

आपको इनके बारे में जानकारी मिलेगी

  • नोटिफ़िकेशन पैनल के रिज़र्व किए गए बातचीत सेक्शन में, बातचीत से जुड़ी सूचनाएं दिखाने का तरीका.
  • Messaging और People API की मदद से चालू होने वाले अलग-अलग अनुभवों को समझने का तरीका.

आपको इन चीज़ों की ज़रूरत होगी

  • Git
  • Android Studio
  • GitHub खाता

2. सेट अप करें

शुरुआत की जगह JetChat ऐप्लिकेशन के हिसाब से तय होती है. स्टार्टर कोड की मदद से JetChat ऐप्लिकेशन में भी मैसेजिंग और पीपल एपीआई को बेहतर तरीके से दिखाया जा सकता है.

स्टार्टर कोड पाएं

इस कोडलैब के लिए स्टार्टर कोड पाने के लिए, यह तरीका अपनाएं:

  1. अपने कमांड लाइन से, इस GitHub रिपॉज़िटरी का क्लोन बनाएं:
git clone –branch starter-code \
https://github.com/android/people-messaging-codelab.git
  1. प्रोजेक्ट को Android Studio में खोलें. इसके बाद, a1bbb9d97659a043.png ऐप्लिकेशन चलाएं पर क्लिक करें. एम्युलेटर पैनल दिखता है और ऐप्लिकेशन दिखाता है.

लंबे समय तक बनाए गए JetChat ऐप्लिकेशन को एक्सप्लोर करें

  1. ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
  2. ऐप्लिकेशन से बाहर निकलें. कुछ ही सेकंड के बाद, आपको एक पुश नोटिफ़िकेशन मिलता है, जिसमें चैट में मौजूद किसी व्यक्ति का जवाब शामिल होता है.

3. बातचीत की सूचनाएं बनाएं

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

स्टेटस बार से नीचे की ओर स्वाइप करने पर दिखने वाला सूचना पैनल

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

NotificationCompat.MessagingStyle क्लास की सूचनाएं पाने के लिए, यह तरीका अपनाएं:

  1. Android Studio के प्रोजेक्ट टैब में, app > java > com.example.compose.jetchat > conversation और फिर ConversationFragment पर दो बार क्लिक करें.
  2. ConversationFragment.kt फ़ाइल में, ConversationFragment क्लास ढूंढें. इसके बाद, उस createNotification फ़ंक्शन का Notification कोड ब्लॉक ढूंढें जहां सूचना बनाई गई है.
  3. setContentText तरीके की जगह कोई setStyle तरीका इस्तेमाल करें, जो सूचना की स्टाइल को NotificationCompat.MessagingStyle क्लास पर सेट करता हो. यह हेल्पर क्लास, setContextText तरीके से सेट किए गए मैसेज को मैसेज से जुड़ी अन्य जानकारी के साथ जोड़ती है. जैसे, मैसेज भेजने का समय और उसे भेजने वाला व्यक्ति.

ConversationFragment.kt

private fun createNotification(
   notificationId: Int,
   message: Message,
   person: Person,
   shortcut: ShortcutInfoCompat,
   time: Long
): Notification? {
    ...
    .setStyle(NotificationCompat.MessagingStyle(person).addMessage(
                      NotificationCompat.MessagingStyle.Message(
                          message.content,
                          time,
                          person
                      )
    )
    )
    ...
    .build()
}

ऐप्लिकेशन चलाएं

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

4. बातचीत के लिए शेयर करने के टारगेट बनाएं

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

शेयर करने के टारगेट तय करना

  1. प्रोजेक्ट टैब में, res डायरेक्ट्री पर राइट क्लिक करें. इसके बाद, नया > डायरेक्ट्री.
  2. टेक्स्ट बॉक्स में, xml डालें. इसके बाद, Enter या macOS पर return दबाएं.
  3. xml डायरेक्ट्री पर राइट क्लिक करें. इसके बाद, फ़ाइल चुनें.
  4. टेक्स्ट बॉक्स में, shortcuts.xml डालें. इसके बाद, Enter या macOS पर return दबाएं.
  5. shortcuts.xml फ़ाइल में, शेयर करने के टारगेट के बारे में बताएं, जो text/plain टाइप के डेटा को शेयर करने का काम मैनेज करता है:

shortcuts.xml

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <share-target android:targetClass="com.example.compose.jetchat.NavActivity">
   <data android:mimeType="text/plain" />
   <category android:name="com.example.compose.jetchat.share.TEXT_SHARE_TARGET" />
 </share-target>
</shortcuts>
  1. प्रोजेक्ट टैब में, manifests पर क्लिक करें और फिर AndroidManifest.xml पर दो बार क्लिक करें.
  2. AndroidManifest.xml फ़ाइल में, shortcuts.xml फ़ाइल तय करें:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.compose.jetchat">

   <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.Jetchat.NoActionBar">
...
 <meta-data android:name="android.app.shortcuts"
            android:resource="@xml/shortcuts" />

    </application>
</manifest>
  1. AndroidManifest.xml फ़ाइल के activity कॉम्पोनेंट में, वह इंटेंट फ़िल्टर बनाएं जिसमें शेयर करने वाला लॉजिक शामिल हो:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.compose.jetchat">

   ...
       <activity
           ...
           <intent-filter>
               <action android:name="android.intent.action.SEND" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="text/plain" />
           </intent-filter>
...

शॉर्टकट तय करना

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

शॉर्टकट जनरेट करने के लिए, यह तरीका अपनाएं:

  1. प्रोजेक्ट टैब में, app पर क्लिक करें > java > com.example.compose.jetchat > conversation > util और फिर ConversationUtil पर दो बार क्लिक करें.
  2. ConversationUtil.kt फ़ाइल में, generateShortcut फ़ंक्शन जोड़ें:

ConversationUtil.kt

import android.content.Intent
import androidx.core.content.pm.ShortcutInfoCompat
import com.example.compose.jetchat.NavActivity

class ConversationUtil {

   companion object {
...
fun generateShortcut(context: Context, shortcutId: String): ShortcutInfoCompat {
   return ShortcutInfoCompat.Builder(context, shortcutId)
   .setCategories(setOf(CATEGORY_SHARE))
   .setLongLived(true)
   .setShortLabel(shortcutId)
   .setLongLabel(shortcutId)
   .setIntent(
       Intent(context, NavActivity::class.java)
           .setAction(Intent.ACTION_VIEW)
   )
   .build()
}

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

सूचना में दिया गया शॉर्टकट देखें

आपको सूचना में, शेयर करने का शॉर्टकट देखना होगा. हालांकि, आपको नोटिफ़िकेशन पुश करने से पहले शॉर्टकट बनाना होगा.

ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. ConversationFragment.kt फ़ाइल में, ConversationFragment क्लास खोजें.
  2. notification वैरिएबल को कॉल करने से पहले, एक shortcut वैरिएबल बनाएं, जो ConversationUtil.generateShortcut से जनरेट किए गए शॉर्टकट का रेफ़रंस देता हो.
  3. notification वैरिएबल के createNotification तरीके में, null को पैरामीटर के तौर पर shortcut वैरिएबल से बदलें.

ConversationFragment.kt

private fun simulateResponseAsANotification() {
   ...
   if (message.author != "me") {
       ...
       val shortcut = ConversationUtil.generateShortcut(context!!, message.author)
       val notification = createNotification(notificationId, message, person, shortcut, time)
       ...
   }
}
  1. createNotification तरीके में, NotificationCompat.Builder#setShortcutInfo तरीका जोड़ें. इसके बाद, shortcut वैरिएबल को पैरामीटर के तौर पर पास करें.

ConversationFragment.kt

private fun createNotification(
  notificatoinIf: Int,
  messagin: Message,
  person: Person,
  shortcut: ShortcutInfoCompat?,
  time: Long
): Notification {
...
return NotificationCompat.Builder(context!!,  ConversationUtil.CHANNEL_MESSAGES)
   ...
   .setShortcutInfo(shortcut)
   .build()
}

शॉर्टकट पब्लिश करें

  • शॉर्टकट को पब्लिश करने के लिए, notificationManager.notify तरीके से पहले वाले simulateResponseAsANotification फ़ंक्शन में, pushDynamicShortcut तरीके को कॉल करें:

ConversationFragment.kt

import androidx.core.content.pm.ShortcutManagerCompat

...private fun simulateResponseAsANotification() {
   ...
   if (message.author != "me") {
       ...
       ShortcutManagerCompat.pushDynamicShortcut(context!!, shortcut)
       ...
   }
}

ऐप्लिकेशन चलाएं

  1. ऐप्लिकेशन चलाएं.
  2. ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
  3. ऐप्लिकेशन से बाहर निकलें. आपको फिर से पुश नोटिफ़िकेशन मिलता है, लेकिन उसकी स्टाइल ज़्यादा साफ़ तौर पर बातचीत से जुड़ी सूचना की तरह होती है. अवतार आइकॉन को ज़्यादा साफ़ तौर पर सुना जा सकता है और इससे ऐप्लिकेशन आइकॉन को इंटिग्रेट किया जा सकता है. मैसेज भेजने वाले की जानकारी, समय, और टेक्स्ट को भी बेहतर तरीके से इस्तेमाल किया जा सकता है.

5. ज़रूरी नहीं: बबल्स की सुविधा चालू करें

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

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

  1. AndroidManifest.xml फ़ाइल में, allowEmbedded और resizeableActivity एट्रिब्यूट जोड़ें. इसके बाद, हर एट्रिब्यूट को true की वैल्यू पर सेट करें:

AndroidManifest.xml

<activity
  ...
  android:allowEmbedded="true"
  android:resizeableActivity="true"
  ...
</activity>
  1. ConversationUtil.kt फ़ाइल की ConversationUtil क्लास में, बबल मेटाडेटा जोड़ें:

ConversationUtil.kt

import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat


fun createBubbleMetadata(context: Context, icon: IconCompat): NotificationCompat.BubbleMetadata {
        // Create bubble intent
        val target = Intent(context, NavActivity::class.java)
        val bubbleIntent = PendingIntent.getActivity(context, REQUEST_BUBBLE, target, flagUpdateCurrent(mutable = true))

        // Create bubble metadata
        return NotificationCompat.BubbleMetadata.Builder(bubbleIntent, icon)
            .setDesiredHeight(400)
            .setSuppressNotification(true)
            .build()
    }
  1. ConversationFragment.kt फ़ाइल में, सूचना पर दिया गया बबल मेटाडेटा बनाएं और उसका रेफ़रंस दें:

ConversationFragment.kt

private fun createNotification(
  notificatoinIf: Int,
  messagin: Message,
  person: Person,
  shortcut: ShortcutInfoCompat?,
  time: Long
): Notification {
...
// Reference the bubble metadata in the notification.
  return NotificationCompat.Builder(context!!,     ConversationUtil.CHANNEL_MESSAGES)
    ...
     .setBubbleMetadata(ConversationUtil.createBubbleMetadata(context!!, person.icon!!))
...
    .build()
}

ऐप्लिकेशन चलाएं

  1. ऐप्लिकेशन चलाएं.
  2. ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
  3. ऐप्लिकेशन से बाहर निकलें. कुछ सेकंड के बाद, आपको चैट से बबल के तौर पर एक सूचना मिलती है.
  4. बबल पर टैप करें. बातचीत बबल से खुलती है.

बातचीत के लिए बबल

6. ज़रूरी नहीं: लिंक शेयर करना

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

शेयरशीट शुरू करने के लिए, यह तरीका अपनाएं:

  1. अपने डिवाइस पर, Google Chrome खोलें. इसके बाद, अपनी पसंद के किसी वेब पेज, जैसे कि developer.android.com पर जाएं.
  2. अगर ज़रूरी हो, तो 2fdbaccda71bc5f0.png ज़्यादा वर्ट पर क्लिक करें.
  3. 771b0be21764f6b6.png शेयर करें पर क्लिक करें. शेयरशीट, स्क्रीन पर सबसे नीचे दिखती है.

शेयरशीट

  1. अगर हो सके, तो 468248e6b8a84bb3.png JetChat पर क्लिक करें. यह यूआरएल, चैट में शेयर किया गया है.
  2. अगर आपको 468248e6b8a84bb3.png JetChat विकल्प नहीं दिखता है, तो सिस्टम शेयरशीट शुरू करने के लिए, 145399af71577431.png ज़्यादा पर क्लिक करें. इसके बाद, ShareSheet पर ऊपर की ओर स्वाइप करके, 468248e6b8a84bb3.png JetChat पर क्लिक करें. यूआरएल को चैट में शेयर किया जाता है.

यह एक आसान उदाहरण है. यहां कई तरह का कॉन्टेंट शेयर किया जा सकता है. ज़्यादा जानकारी के लिए, अन्य ऐप्लिकेशन से आसान डेटा वापस पाना देखें.

7. बधाई हो

बधाई हो! अब आपको मैसेज सेवा और लोग एपीआई के साथ किसी Android ऐप्लिकेशन में चैट से जुड़ी सुविधाएं जोड़ने का तरीका पता है. मैसेज सेवा का आनंद लें!

ज़्यादा जानें