1. शुरू करने से पहले
मैसेजिंग ऐप्लिकेशन बनाना मुश्किल है. हालांकि, सभी उपयोगकर्ताओं को अलग-अलग अनुभव मिलता है, लेकिन Android Messages और People API की सुविधा देता है. इन एपीआई की मदद से, लोगों के साथ चैट करने का अनुभव बेहतर और आसान हो जाता है.
इस कोडलैब में, आपको इन एपीआई का इस्तेमाल करने का तरीका पता है. इससे, Android पर चैट ऐप्लिकेशन के लिए एक दिलचस्प नेटवर्क बनाया जा सकता है. आपने JetChat ऐप्लिकेशन को बढ़ाया है. यह एक ऐसा चैट ऐप्लिकेशन है जो बिना किसी रुकावट के काम करता है. साथ ही, यह ऐसे चैट ऐप्लिकेशन का भी इस्तेमाल करता है जो Jetpack का इस्तेमाल करता है.
ज़रूरी शर्तें
- Android डेवलपमेंट की बुनियादी जानकारी
- सूचनाओं के बारे में बुनियादी जानकारी
आपको क्या बनाना होगा
लंबे समय तक चलने वाला JetChat ऐप्लिकेशन, जो ये काम करता है:
- सूचना पैनल के रिज़र्व किए गए बातचीत सेक्शन में, बातचीत को दिखाने वाली सूचनाएं दिखाता है.
- इन सूचनाओं में रेफ़रंस फ़ाइलें, टारगेट शेयर करती हैं. इससे अपने ऐप्लिकेशन की बातचीत में, आपका डेटा शेयर किया जा सकता है.
- यह नीति, सिस्टम से मिलने वाले डिफ़ॉल्ट अनुभवों का फ़ायदा लेने के लिए, इन ऑब्जेक्ट को बनाने के सबसे सही तरीकों को लागू करती है. इससे आपके ऐप्लिकेशन को बेहतर बनाने में मदद मिलती है.
आपको इनके बारे में जानकारी मिलेगी
- नोटिफ़िकेशन पैनल के रिज़र्व किए गए बातचीत सेक्शन में, बातचीत से जुड़ी सूचनाएं दिखाने का तरीका.
- Messaging और People API की मदद से चालू होने वाले अलग-अलग अनुभवों को समझने का तरीका.
आपको इन चीज़ों की ज़रूरत होगी
- Git
- Android Studio
- GitHub खाता
2. सेट अप करें
शुरुआत की जगह JetChat ऐप्लिकेशन के हिसाब से तय होती है. स्टार्टर कोड की मदद से JetChat ऐप्लिकेशन में भी मैसेजिंग और पीपल एपीआई को बेहतर तरीके से दिखाया जा सकता है.
स्टार्टर कोड पाएं
इस कोडलैब के लिए स्टार्टर कोड पाने के लिए, यह तरीका अपनाएं:
- अपने कमांड लाइन से, इस GitHub रिपॉज़िटरी का क्लोन बनाएं:
git clone –branch starter-code \ https://github.com/android/people-messaging-codelab.git
- प्रोजेक्ट को Android Studio में खोलें. इसके बाद,
ऐप्लिकेशन चलाएं पर क्लिक करें. एम्युलेटर पैनल दिखता है और ऐप्लिकेशन दिखाता है.
लंबे समय तक बनाए गए JetChat ऐप्लिकेशन को एक्सप्लोर करें
- ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. कुछ ही सेकंड के बाद, आपको एक पुश नोटिफ़िकेशन मिलता है, जिसमें चैट में मौजूद किसी व्यक्ति का जवाब शामिल होता है.
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()
}
ऐप्लिकेशन चलाएं
- ऐप्लिकेशन चलाएं.
- ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. आपको फिर से पुश नोटिफ़िकेशन मिलता है, लेकिन उसकी स्टाइल अलग है. इसमें मैसेज का अवतार और उसकी एक खास स्टाइल शामिल है. हालांकि, आपकी सूचनाएं जहां दिखाई जानी चाहिए, वहां दिखाई देने से पहले अभी और काम करना होगा.
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)
...
}
}
ऐप्लिकेशन चलाएं
- ऐप्लिकेशन चलाएं.
- ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. आपको फिर से पुश नोटिफ़िकेशन मिलता है, लेकिन उसकी स्टाइल ज़्यादा साफ़ तौर पर बातचीत से जुड़ी सूचना की तरह होती है. अवतार आइकॉन को ज़्यादा साफ़ तौर पर सुना जा सकता है और इससे ऐप्लिकेशन आइकॉन को इंटिग्रेट किया जा सकता है. मैसेज भेजने वाले की जानकारी, समय, और टेक्स्ट को भी बेहतर तरीके से इस्तेमाल किया जा सकता है.
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()
}
ऐप्लिकेशन चलाएं
- ऐप्लिकेशन चलाएं.
- ऐप्लिकेशन के मैसेज #composers टेक्स्ट बॉक्स में, कोई मैसेज डालें और भेजें पर टैप करें.
- ऐप्लिकेशन से बाहर निकलें. कुछ सेकंड के बाद, आपको चैट से बबल के तौर पर एक सूचना मिलती है.
- बबल पर टैप करें. बातचीत बबल से खुलती है.
6. ज़रूरी नहीं: लिंक शेयर करना
आपने शेयर टारगेट का एलान किया है और अपनी सूचनाओं में उनका रेफ़रंस भी दिया है. इससे आपका संपर्क, शेयरशीट में भी दिखने लगा. शेयरशीट, एक बॉटम-अप कॉम्पोनेंट है जो ACTION
इंटेंट भेजे जाने पर दिखता है. शेयर के टारगेट, शेयरशीट में सबसे ऊपर दिखते हैं. इनकी मदद से, अपनी बातचीत में रिच कॉन्टेंट शेयर किया जा सकता है.
शेयरशीट शुरू करने के लिए, यह तरीका अपनाएं:
- अपने डिवाइस पर, Google Chrome खोलें. इसके बाद, अपनी पसंद के किसी वेब पेज, जैसे कि developer.android.com पर जाएं.
- अगर ज़रूरी हो, तो
ज़्यादा वर्ट पर क्लिक करें.
शेयर करें पर क्लिक करें. शेयरशीट, स्क्रीन पर सबसे नीचे दिखती है.
- अगर हो सके, तो
JetChat पर क्लिक करें. यह यूआरएल, चैट में शेयर किया गया है.
- अगर आपको
JetChat विकल्प नहीं दिखता है, तो सिस्टम शेयरशीट शुरू करने के लिए,
ज़्यादा पर क्लिक करें. इसके बाद, ShareSheet पर ऊपर की ओर स्वाइप करके,
JetChat पर क्लिक करें. यूआरएल को चैट में शेयर किया जाता है.
यह एक आसान उदाहरण है. यहां कई तरह का कॉन्टेंट शेयर किया जा सकता है. ज़्यादा जानकारी के लिए, अन्य ऐप्लिकेशन से आसान डेटा वापस पाना देखें.
7. बधाई हो
बधाई हो! अब आपको मैसेज सेवा और लोग एपीआई के साथ किसी Android ऐप्लिकेशन में चैट से जुड़ी सुविधाएं जोड़ने का तरीका पता है. मैसेज सेवा का आनंद लें!