1. আপনি শুরু করার আগে
একটি মেসেজিং অ্যাপ তৈরি করা চ্যালেঞ্জিং। যদিও সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা সাবজেক্টিভ, অ্যান্ড্রয়েড মেসেজিং এবং পিপল এপিআই প্রদান করে, যা চ্যাটের অভিজ্ঞতাকে উন্নত ও প্রবাহিত করে।
এই কোডল্যাবে, আপনি Android এ চ্যাট অ্যাপের জন্য একটি আকর্ষণীয় ইকোসিস্টেম তৈরি করতে এই APIগুলি কীভাবে ব্যবহার করবেন তা শিখবেন। আপনি জেটচ্যাট অ্যাপটি প্রসারিত করেন, একটি বেয়ার-বোন এবং নন-ফাংশনাল চ্যাট অ্যাপ যা জেটপ্যাক কম্পোজ ব্যবহার করে।
পূর্বশর্ত
- অ্যান্ড্রয়েড বিকাশের প্রাথমিক জ্ঞান
- বিজ্ঞপ্তির প্রাথমিক জ্ঞান
আপনি কি নির্মাণ করবেন
একটি বর্ধিত JetChat অ্যাপ যা নিম্নলিখিতগুলি করে:
- বিজ্ঞপ্তিগুলিকে সারফেস করে যা বিজ্ঞপ্তি ড্রয়ারের সংরক্ষিত কথোপকথন বিভাগে কথোপকথনের প্রতিনিধিত্ব করে৷
- উল্লেখগুলি এই বিজ্ঞপ্তিগুলিতে লক্ষ্যগুলি ভাগ করে যা আপনাকে আপনার অ্যাপের কথোপকথনে ভাগ করতে দেয়৷
- আপনার অ্যাপকে উন্নত করে এমন সিস্টেম দ্বারা প্রদত্ত ডিফল্ট অভিজ্ঞতার সুবিধা নিতে এই বস্তুগুলি তৈরির জন্য সর্বোত্তম অনুশীলনগুলি প্রয়োগ করে৷
আপনি কি শিখবেন
- বিজ্ঞপ্তি ড্রয়ারের সংরক্ষিত কথোপকথন বিভাগে কীভাবে কথোপকথন-সম্পর্কিত বিজ্ঞপ্তিগুলি দেখা যায়।
- মেসেজিং এবং পিপল এপিআই দ্বারা সক্রিয় করা বিভিন্ন অভিজ্ঞতা কীভাবে বোঝা যায়।
আপনি কি প্রয়োজন হবে
- গিট
- অ্যান্ড্রয়েড স্টুডিও
- একটি GitHub অ্যাকাউন্ট
2. সেট আপ করুন
প্রারম্ভিক বিন্দু JetChat অ্যাপের উপর ভিত্তি করে। স্টার্টার কোড মেসেজিং এবং পিপল এপিআই আরও ভালোভাবে প্রদর্শন করতে JetChat অ্যাপকে প্রসারিত করে।
স্টার্টার কোড পান
এই কোডল্যাবের জন্য স্টার্টার কোড পেতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার কমান্ড লাইন থেকে, নিম্নলিখিত GitHub সংগ্রহস্থল ক্লোন করুন:
git clone –branch starter-code \ https://github.com/android/people-messaging-codelab.git
- অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি খুলুন এবং তারপরে ক্লিক করুন অ্যাপ চালান । এমুলেটর ফলকটি উপস্থিত হয় এবং অ্যাপটি প্রদর্শন করে।
বর্ধিত JetChat অ্যাপটি অন্বেষণ করুন
- অ্যাপের মেসেজ #কম্পোজার টেক্সট বক্সে, একটি বার্তা লিখুন এবং তারপরে পাঠান ট্যাপ করুন।
- অ্যাপ থেকে দূরে নেভিগেট করুন. কয়েক সেকেন্ড পরে, আপনি একটি পুশ বিজ্ঞপ্তি পাবেন যাতে চ্যাটের কারো কাছ থেকে একটি প্রতিক্রিয়া রয়েছে।
3. কথোপকথনের বিজ্ঞপ্তি তৈরি করুন৷
অ্যান্ড্রয়েড 11 এপিআই প্রবর্তন করেছে যা চ্যাট-সম্পর্কিত বিজ্ঞপ্তিগুলিকে বিজ্ঞপ্তি ড্রয়ারের একটি নির্দিষ্ট বিভাগে প্রদর্শিত হতে দেয়, যা কথোপকথনের জন্য কঠোরভাবে।
বিজ্ঞপ্তিটি অবশ্যই Notification.MessagingStyle
ক্লাসের হতে হবে এবং একটি দীর্ঘস্থায়ী শেয়ারিং শর্টকাট উল্লেখ করতে হবে। এই বিভাগে, আপনি কথোপকথন বিভাগে কথোপকথনের প্রতিনিধিত্বকারী এই বিজ্ঞপ্তিগুলিকে সামনে আনতে এই API প্রয়োজনীয়তাগুলি কীভাবে পূরণ করবেন তা শিখবেন।
NotificationCompat.MessagingStyle
ক্লাসের বিজ্ঞপ্তিগুলি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- অ্যান্ড্রয়েড স্টুডিওর প্রজেক্ট ট্যাবে,
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
মান সেট করা নিশ্চিত করে যে এই শর্টকাটটি সিস্টেম দ্বারা ক্যাশে করা হয়েছে এবং UI-তে বিভিন্ন পৃষ্ঠে প্রদর্শিত হয়েছে৷
বিজ্ঞপ্তিতে শর্টকাট উল্লেখ করুন
আপনাকে বিজ্ঞপ্তিতে শেয়ারিং শর্টকাট উল্লেখ করতে হবে। যাইহোক, আপনি বিজ্ঞপ্তি পুশ করার আগে আপনাকে অবশ্যই শর্টকাট তৈরি করতে হবে।
এটি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
-
ConversationFragment.kt
ফাইলে,ConversationFragment
ক্লাস খুঁজুন। -
notification
ভেরিয়েবলে কল করার আগে, একটিshortcut
ভেরিয়েবল তৈরি করুন যাConversationUtil.generateShortcut
থেকে উৎপন্ন শর্টকাট উল্লেখ করে। -
notification
ভেরিয়েবলেরcreateNotification
পদ্ধতিতে, একটি প্যারামিটার হিসাবেshortcut
ভেরিয়েবলের সাথেnull
প্রতিস্থাপন করুন।
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 , ক্লিক করুন সিস্টেম শেয়ারশীট চালু করার জন্য আরও কিছু , এবং তারপরে শেয়ারশীটে সোয়াইপ করুন এবং ক্লিক করুন জেটচ্যাট । URLটি চ্যাটে শেয়ার করা হয়েছে।
এটি একটি সহজ উদাহরণ। শেয়ার করার জন্য আরও সমৃদ্ধ বিষয়বস্তুর ধরন আছে। আরও তথ্যের জন্য, অন্যান্য অ্যাপ থেকে সাধারণ ডেটা পুনরুদ্ধার করা দেখুন।
7. অভিনন্দন
অভিনন্দন! এখন আপনি জানেন কিভাবে মেসেজিং এবং পিপল এপিআই সহ একটি অ্যান্ড্রয়েড অ্যাপে চ্যাট-সম্পর্কিত বৈশিষ্ট্য যুক্ত করতে হয়। শুভ বার্তা!