1. शुरू करने से पहले
मैसेजिंग ऐप्लिकेशन बनाना मुश्किल है. हालांकि, उपयोगकर्ता अनुभव हर व्यक्ति के हिसाब से अलग-अलग होता है. Android, Messaging और People API उपलब्ध कराता है. इनसे चैट करने का अनुभव बेहतर होता है और चैट करने की प्रोसेस आसान हो जाती है.
इस कोडलैब में, Android पर चैट ऐप्लिकेशन के लिए एक बेहतरीन इकोसिस्टम बनाने के लिए, इन एपीआई का इस्तेमाल करने का तरीका बताया गया है. आपको JetChat ऐप्लिकेशन को बेहतर बनाना है. यह एक बुनियादी और काम न करने वाला चैट ऐप्लिकेशन है, जो Jetpack Compose का इस्तेमाल करता है.
ज़रूरी शर्तें
- Android डेवलपमेंट की बुनियादी जानकारी
- सूचनाओं के बारे में बुनियादी जानकारी
आपको क्या बनाने को मिलेगा
JetChat का एक्सटेंडेड ऐप्लिकेशन, जो ये काम करता है:
- सूचनाएं दिखाने वाले इंटरफ़ेस में, सूचनाएं दिखाने वाले पैनल के 'आरक्षित बातचीत' सेक्शन में मौजूद बातचीत की सूचनाएं दिखाता है.
- इन सूचनाओं में, शेयर करने के टारगेट के बारे में जानकारी होती है. इससे आपको अपने ऐप्लिकेशन की बातचीत में शेयर करने की सुविधा मिलती है.
- यह इन ऑब्जेक्ट को बनाने के लिए सबसे सही तरीकों को लागू करता है, ताकि सिस्टम की ओर से उपलब्ध कराए गए डिफ़ॉल्ट अनुभवों का फ़ायदा उठाया जा सके. इससे आपके ऐप्लिकेशन को बेहतर बनाया जा सकता है.
आपको क्या सीखने को मिलेगा
- सूचना पैनल के 'आरक्षित बातचीत' सेक्शन में, बातचीत से जुड़ी सूचनाएं कैसे दिखें.
- Messaging और People API की मदद से उपलब्ध कराई जाने वाली अलग-अलग सुविधाओं के बारे में जानकारी.
आपको इन चीज़ों की ज़रूरत होगी
- Git
- Android Studio
- GitHub खाता
2. सेट अप करें
यह JetChat ऐप्लिकेशन पर आधारित है. स्टार्टर कोड, JetChat ऐप्लिकेशन को बेहतर बनाता है, ताकि Messaging और People API को बेहतर तरीके से दिखाया जा सके.
स्टार्टर कोड पाना
इस कोडलैब के लिए स्टार्टर कोड पाने के लिए, यह तरीका अपनाएं:
- अपनी कमांड लाइन से, GitHub की इस रिपॉज़िटरी को क्लोन करें:
git clone –branch starter-code \ https://github.com/android/people-messaging-codelab.git
- Android Studio में प्रोजेक्ट खोलें. इसके बाद,
ऐप्लिकेशन चलाएं पर क्लिक करें. एम्युलेटर पैनल दिखता है और ऐप्लिकेशन दिखाता है.
JetChat ऐप्लिकेशन के एक्सटेंशन के बारे में जानें
- ऐप्लिकेशन के मैसेज #कंपोज़र टेक्स्ट बॉक्स में, मैसेज डालें. इसके बाद, भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. कुछ सेकंड बाद, आपको एक पुश नोटिफ़िकेशन मिलेगा. इसमें चैट में शामिल किसी व्यक्ति का जवाब होगा.
3. बातचीत से जुड़ी सूचनाएं बनाना
Android 11 में एपीआई पेश किए गए थे. इनकी मदद से, चैट से जुड़ी सूचनाओं को सूचना पैनल के एक तय सेक्शन में दिखाया जा सकता है. यह सेक्शन सिर्फ़ बातचीत के लिए होता है.

सूचना, Notification.MessagingStyle क्लास की होनी चाहिए. साथ ही, इसमें हमेशा मौजूद रहने वाले शेयरिंग शॉर्टकट का रेफ़रंस होना चाहिए. इस सेक्शन में, आपको एपीआई से जुड़ी इन ज़रूरी शर्तों को पूरा करने का तरीका बताया गया है. इससे, आपको बातचीत वाले सेक्शन में बातचीत की जानकारी देने वाली सूचनाएं दिखेंगी.
NotificationCompat.MessagingStyle क्लास की सूचनाएं पाने के लिए, यह तरीका अपनाएं:
- Android Studio के प्रोजेक्ट टैब में,
app>java>com.example.compose.jetchat>conversationपर क्लिक करें. इसके बाद,ConversationFragmentपर दो बार क्लिक करें. ConversationFragment.ktफ़ाइल में,ConversationFragmentक्लास ढूंढें. इसके बाद,createNotificationफ़ंक्शन काNotificationकोड ब्लॉक ढूंढें, जहां सूचना बनाई गई है.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()
}
ऐप्लिकेशन चलाना
- ऐप्लिकेशन चलाएं.
- ऐप्लिकेशन के मैसेज #कंपोज़र टेक्स्ट बॉक्स में, मैसेज डालें. इसके बाद, भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. आपको फिर से पुश नोटिफ़िकेशन मिलेगा, लेकिन इसका स्टाइल अलग होगा. इसमें अवतार और मैसेज के लिए अलग स्टाइल शामिल होती है. हालांकि, सूचनाएं सही जगह पर दिखने से पहले, हमें कुछ और काम करने होंगे.
4. बातचीत के लिए शेयर करने के टारगेट बनाना
आपको सूचना में, शेयर करने के शॉर्टकट या शेयर करने के टारगेट का रेफ़रंस देना होगा. शेयर टारगेट, shortcuts.xml फ़ाइल में तय किए जाते हैं. ये प्रोग्राम के हिसाब से तय किए गए शॉर्टकट को मैनेज करने के एंट्री पॉइंट होते हैं. आपके बनाए गए शॉर्टकट, ऐप्लिकेशन में की गई बातचीत को दिखाते हैं. साथ ही, इनसे बातचीत में कॉन्टेंट शेयर किया जा सकता है.
शेयर के टारगेट तय करना
- प्रोजेक्ट टैब में,
resडायरेक्ट्री पर राइट क्लिक करें. इसके बाद, नया > डायरेक्ट्री चुनें. - टेक्स्ट बॉक्स में,
xmlडालें. इसके बाद,Enter(macOS परreturn) दबाएं. xmlडायरेक्ट्री पर राइट क्लिक करें. इसके बाद, फ़ाइल चुनें.- टेक्स्ट बॉक्स में,
shortcuts.xmlडालें. इसके बाद,Enter(macOS परreturn) दबाएं. 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>
- प्रोजेक्ट टैब में,
manifestsपर क्लिक करें. इसके बाद,AndroidManifest.xmlपर दो बार क्लिक करें. 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>
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>
...
शॉर्टकट तय करना
आपको हर सूचना के लिए, उससे जुड़ा शॉर्टकट जोड़ना होगा. हर बातचीत के लिए सिर्फ़ एक यूनीक शॉर्टकट तय किया जा सकता है. ऐसा इसलिए, क्योंकि यूनीक शॉर्टकट उस एक संपर्क को दिखाता है जिसके साथ शेयर करना है.
शॉर्टकट जनरेट करने के लिए, यह तरीका अपनाएं:
- प्रोजेक्ट टैब में,
app>java>com.example.compose.jetchat>conversation>utilपर क्लिक करें. इसके बाद,ConversationUtilपर दो बार क्लिक करें. 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 वैल्यू को लंबे समय तक सेट करने से यह पक्का होता है कि इस शॉर्टकट को सिस्टम की कैश मेमोरी में सेव किया गया है और यह यूज़र इंटरफ़ेस (यूआई) के अलग-अलग हिस्सों में दिखता है.
सूचना में मौजूद शॉर्टकट का इस्तेमाल करना
आपको सूचना में शेयरिंग शॉर्टकट का रेफ़रंस देना होगा. हालांकि, सूचना भेजने से पहले आपको शॉर्टकट बनाना होगा.
ऐसा करने के लिए, इन चरणों का अनुसरण करें:
ConversationFragment.ktफ़ाइल में,ConversationFragmentक्लास ढूंढें.notificationवैरिएबल को कॉल करने से पहले, एकshortcutवैरिएबल बनाएँ. यहConversationUtil.generateShortcutसे जनरेट किए गए शॉर्टकट को रेफ़रंस करता है.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)
...
}
}
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)
...
}
}
ऐप्लिकेशन चलाना
- ऐप्लिकेशन चलाएं.
- ऐप्लिकेशन के मैसेज #कंपोज़र टेक्स्ट बॉक्स में, मैसेज डालें. इसके बाद, भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. आपको फिर से पुश नोटिफ़िकेशन मिलेगा. हालांकि, इसे बातचीत से जुड़ी सूचना के तौर पर ज़्यादा साफ़ तौर पर स्टाइल किया गया है. अवतार आइकॉन को ज़्यादा बेहतर बनाया गया है और इसमें ऐप्लिकेशन आइकॉन को शामिल किया गया है. ईमेल भेजने वाले का नाम, समय, और टेक्स्ट भी ज़्यादा व्यवस्थित तरीके से दिखता है.
5. ज़रूरी नहीं: बबल्स की सुविधा चालू करना
बबल नोटिफ़िकेशन की सुविधा Android 9 में लॉन्च की गई थी. Android 11 में, बातचीत के संदर्भ में इसका इस्तेमाल करने के लिए, इसे बेहतर बनाया गया और इसका मकसद बदला गया. बबल, गोल आकार के ओवरले होते हैं. ये आपकी बातचीत के अवतार होते हैं. ये ऐप्लिकेशन लॉन्चर में दिखते हैं. साथ ही, इनकी मदद से बड़े किए गए बबल में बातचीत का आसानी से जवाब दिया जा सकता है. बबल की सुविधा चालू होने पर भी, उपयोगकर्ता के पास इसे बंद करने का विकल्प होता है.
बबल की सुविधा चालू करने के लिए, यह तरीका अपनाएं:
AndroidManifest.xmlफ़ाइल में,allowEmbeddedऔरresizeableActivityएट्रिब्यूट जोड़ें. इसके बाद, हर एट्रिब्यूट के लिएtrueवैल्यू सेट करें:
AndroidManifest.xml
<activity
...
android:allowEmbedded="true"
android:resizeableActivity="true"
...
</activity>
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()
}
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()
}
ऐप्लिकेशन चलाना
- ऐप्लिकेशन चलाएं.
- ऐप्लिकेशन के मैसेज #कंपोज़र टेक्स्ट बॉक्स में, मैसेज डालें. इसके बाद, भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. कुछ सेकंड बाद, आपको चैट की सूचना बबल के तौर पर मिलेगी.
- बबल पर टैप करें. बबल से बातचीत खुल जाती है.

6. ज़रूरी नहीं: लिंक शेयर करना
आपने शेयर करने के टारगेट का एलान किया है और उन्हें अपनी सूचनाओं में शामिल किया है. इससे, शेयरशीट में आपका संपर्क भी दिखने लगा है. शेयरशीट, नीचे से ऊपर की ओर दिखने वाला एक कॉम्पोनेंट है. यह तब दिखता है, जब ACTION इंटेंट भेजा जाता है. शेयर करने के टारगेट, शेयरशीट में सबसे ऊपर दिखते हैं. इनकी मदद से, बातचीत में रिच कॉन्टेंट शेयर किया जा सकता है.
शेयरशीट को चालू करने के लिए, यह तरीका अपनाएं:
- अपने डिवाइस पर, Google Chrome खोलें. इसके बाद, अपनी पसंद का कोई वेब पेज खोलें. जैसे, developer.android.com.
- अगर ज़रूरी हो, तो
ज़्यादा पर क्लिक करें.
शेयर करें पर क्लिक करें. शेयरशीट, स्क्रीन पर सबसे नीचे दिखती है.

- अगर हो सके, तो
JetChat पर क्लिक करें. यूआरएल को चैट में शेयर किया जाता है. - अगर आपको
JetChat नहीं दिखता है, तो सिस्टम की शेयरशीट खोलने के लिए,
ज़्यादा पर क्लिक करें. इसके बाद, शेयरशीट पर ऊपर की ओर स्वाइप करें और
JetChat पर क्लिक करें. यूआरएल को चैट में शेयर किया जाता है.
यह एक सामान्य उदाहरण है. शेयर करने के लिए, ज़्यादा बेहतर कॉन्टेंट टाइप उपलब्ध हैं. ज़्यादा जानकारी के लिए, दूसरे ऐप्लिकेशन से आसान डेटा पाना लेख पढ़ें.
7. बधाई हो
बधाई हो! अब आपको पता है कि Messaging और People API की मदद से, Android ऐप्लिकेशन में चैट से जुड़ी सुविधाएं कैसे जोड़ी जाती हैं. मैसेज भेजने का आनंद लें!