Android Auto-এর জন্য টেমপ্লেটেড মেসেজিং অভিজ্ঞতা তৈরি করুন

টেমপ্লেটযুক্ত মেসেজিং অভিজ্ঞতাগুলো বিটা পর্যায়ে রয়েছে।
বর্তমানে, যে কেউ প্লে স্টোরের ইন্টারনাল টেস্টিং এবং ক্লোজড টেস্টিং ট্র্যাকে টেমপ্লেটেড মেসেজিং অভিজ্ঞতা সহ কমিউনিকেশন অ্যাপ প্রকাশ করতে পারবেন। ওপেন টেস্টিং এবং প্রোডাকশন ট্র্যাকে প্রকাশের অনুমতি পরবর্তীতে দেওয়া হবে।

মেসেজ পড়া ও উত্তর দেওয়ার জন্য সাধারণ নোটিফিকেশন-ভিত্তিক মেসেজিং অভিজ্ঞতার পাশাপাশি, অ্যান্ড্রয়েড অটো ‘অ্যান্ড্রয়েড ফর কারস অ্যাপ লাইব্রেরি’ ব্যবহার করে তৈরি আরও উন্নত মেসেজিং অভিজ্ঞতা সমর্থন করে।

নোটিফিকেশন-চালিত মেসেজিং অভিজ্ঞতা সমর্থন করুন

যেসব অ্যাপ টেমপ্লেটেড মেসেজিং অভিজ্ঞতা সমর্থন করে, সেগুলোকে অবশ্যই অ্যান্ড্রয়েড অটো-এর জন্য মেসেজিং নোটিফিকেশন সুবিধাটিও প্রসারিত করতে হবে। এই ইন্টিগ্রেশনের ফলে ব্যবহারকারীরা টেমপ্লেটেড অ্যাপটি না খুলেই মেসেজ পড়তে ও উত্তর দিতে পারেন।

একটি টেমপ্লেটেড মেসেজিং অভিজ্ঞতা তৈরি করুন

আপনার অ্যাপের টেমপ্লেটেড অভিজ্ঞতা তৈরি শুরু করতে, ‘অ্যান্ড্রয়েড ফর কারস অ্যাপ লাইব্রেরি ব্যবহার করুন ’ এবং ‘আপনার টেমপ্লেটেড অ্যাপে অ্যান্ড্রয়েড অটো সমর্থন যোগ করুন’ -এর নির্দেশিকা অনুসরণ করুন। তারপর, টেমপ্লেটেড মেসেজিং অ্যাপের নির্দিষ্ট প্রয়োজনীয়তাগুলো বুঝতে এই পৃষ্ঠার নির্দেশিকা দেখুন।

আপনার অ্যাপের ম্যানিফেস্ট ফাইলগুলি কনফিগার করুন

আপনার অ্যাপের সক্ষমতা সম্পর্কে অ্যান্ড্রয়েড অটোকে জানাতে, আপনার অ্যাপকে অবশ্যই নিম্নলিখিত কাজগুলো করতে হবে:

আপনার ম্যানিফেস্টে ক্যাটাগরি সাপোর্ট ঘোষণা করুন।

আপনার অ্যাপের CarAppService এর ইন্টেন্ট ফিল্টারে androidx.car.app.category.MESSAGING কার অ্যাপ ক্যাটাগরিটি ডিক্লেয়ার করতে হবে।

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.MESSAGING"/>
      </intent-filter>
    </service>
    ...
<application>

গাড়ির অ্যাপের সর্বনিম্ন API স্তর সেট করুন

যেহেতু ConversationItem API শুধুমাত্র Car API 7 বা তার উচ্চতর সংস্করণে সমর্থিত, তাই আপনার minCarApiLevel মেটাডেটাও সেই মানে সেট করা উচিত। আরও তথ্যের জন্য Car App API Level দেখুন।

<application ...>
    ...
    <meta-data
        android:name="androidx.car.app.minCarApiLevel"
        android:value="7"/>
    ...
</application>

অ্যান্ড্রয়েড অটো সমর্থন ঘোষণা করুন

Android Auto সাপোর্ট ঘোষণা করার জন্য আপনি যে automotive_app_desc.xml ফাইলটি ব্যবহার করেন, সেখানে notification এবং template উভয় captrivate-ই ঘোষিত আছে কিনা তা যাচাই করুন:

<automotiveApp>
    <uses name="notification" />
    <uses name="template" />
</automotiveApp>

যদি আপনার অ্যাপটিকে ডিফল্ট এসএমএস হ্যান্ডলার হিসেবে সেট করা যায়, তাহলে অবশ্যই নিম্নলিখিত <uses> এলিমেন্টটি অন্তর্ভুক্ত করুন। যদি আপনি তা না করেন, তাহলে ইনকামিং এসএমএস/এমএমএস মেসেজগুলো হ্যান্ডেল করার জন্য অ্যান্ড্রয়েড অটো-র বিল্ট-ইন ডিফল্ট হ্যান্ডলার ব্যবহৃত হবে, যার ফলে ডুপ্লিকেট নোটিফিকেশন আসতে পারে।

<automotiveApp>
    ...
    <uses name="sms" />
</automotiveApp>

কথোপকথন প্রদর্শন করুন

কোনো ব্যবহারকারীর কথোপকথনের একটি সার্বিক চিত্র প্রদর্শন করতে, আপনি একটি ListTemplate বা SectionedItemTemplateConversationItem অবজেক্টের একটি তালিকা প্রদর্শন করতে পারেন।

ব্যবহারকারীর ভালো অভিজ্ঞতার জন্য, আমরা সর্বাধিক ৫-১০টি সাম্প্রতিকতম বা সবচেয়ে গুরুত্বপূর্ণ কথোপকথন প্রদান করার পরামর্শ দিই, এবং প্রতিটি কথোপকথনের জন্য সাম্প্রতিকতম ৫টির বেশি বার্তা না রাখার কথা বলি। এটি লোডিং পারফরম্যান্স উন্নত করতে, ব্যবহারকারীদের সবচেয়ে প্রাসঙ্গিক বিষয়বস্তু দেখতে সাহায্য করে এবং ইন্টারঅ্যাকশনের সময় কমিয়ে আনে।

class MyMessagingScreen() : Screen() {

    override fun onGetTemplate(): Template {
        val itemListBuilder = ItemList.Builder()
        val conversations: List<MyConversation> = // Retrieve conversations

        for (conversation: MyConversation in conversations) {
            val carMessages: List<CarMessage> = conversation.getMessages()
                .map { message ->
                    // CarMessage supports additional fields such as MIME type and URI,
                    // which you should set if available
                    CarMessage.Builder()
                        .setSender(message.sender)
                        .setBody(message.body)
                        .setReceivedTimeEpochMillis(message.receivedTimeEpochMillis)
                        .setRead(message.isRead)
                        .build()
                }

            itemListBuilder.addItem(
                ConversationItem.Builder()
                    .setConversationCallback { /* Implement your conversation callback logic here */ }
                    .setId(/* Set conversation ID */)
                    .setTitle(/* Set conversation title */)
                    .setIcon(/* Set conversation icon if available */)
                    .setMessages(carMessages)
                    /* When the sender of a CarMessage is equal to this Person,
                    message readout is adjusted to "you said" instead of "<person>
                    said" */
                    .setSelf(/* Set self-sender */)
                    .setGroupConversation(/* Set if the message contains more than 2 participants */)
                    .build()
            )
        }

        return ListTemplate.Builder()
            .setTitle("Conversations")
            .setHeaderAction(Action.APP_ICON)
            .setSingleList(itemListBuilder.build())
            .build()
    }
}

প্রতিটি ConversationItem স্বয়ংক্রিয়ভাবে একটি বার্তা চালানো, সেটিকে পঠিত হিসেবে চিহ্নিত করা এবং উত্তর দেওয়ার অ্যাকশনগুলো প্রদর্শন করে। ConversationItem তৈরি করার সময় আপনার সরবরাহ করা ConversationCallbackDelegate দ্বারা এই অ্যাকশনগুলো পরিচালিত হয়।

আপনার অ্যাপে যদি কথোপকথনের শর্টকাট থাকে, তাহলে ConversationItem তৈরি করার সময় দেওয়া আইডিটি সেই কথোপকথনের শর্টকাটের আইডির সাথে একই কি না, তা যাচাই করে নিন।

কথোপকথন আপডেট করুন

ব্যবহারকারীরা যখন বার্তা পাঠায় এবং গ্রহণ করে, তখন নতুন বার্তাগুলো অন্তর্ভুক্ত করার জন্য invalidate() কল করে আপনার অ্যাপের স্ক্রিনগুলো রিফ্রেশ করা উচিত। একটি টেমপ্লেটের বিষয়বস্তু রিফ্রেশ করা দেখুন।

সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, আমরা রিফ্রেশ টাইম ৫০০ মিলিসেকেন্ড বা তার কম রাখার পরামর্শ দিই। যদি ঘন ঘন রিফ্রেশ করতে বেশি সময় লাগে, তাহলে আগত বার্তাগুলো লোড হওয়ার সময় আপনি একটি লোডিং অবস্থা প্রদর্শন করতে পারেন।

বিজ্ঞপ্তির গুরুত্ব যথাযথভাবে নির্ধারণ করুন

মনোযোগের ব্যাঘাত কমাতে, ব্যবহারকারী যখন কোনো সংশ্লিষ্ট কথোপকথন দেখছেন, তখন আপনার অ্যাপের উচিত আগত নোটিফিকেশনগুলোর গুরুত্ব কমিয়ে দেওয়া, যাতে নোটিফিকেশনগুলো হেডস আপ নোটিফিকেশন (HUN) হিসেবে প্রদর্শিত না হয়।

যে Screen কোনো কথোপকথন প্রদর্শিত হয়, তার জীবনচক্র পর্যবেক্ষণ করে আপনি সেটি দেখা যাচ্ছে কিনা তা জানতে পারবেন। একটি স্ক্রিনের জীবনচক্র দেখুন।

কোনো নোটিফিকেশন যাতে HUN হিসেবে প্রদর্শিত না হয়, সেজন্য প্রায়োরিটি IMPORTANCE_DEFAULT বা তার চেয়ে কম সেট করুন।

টেমপ্লেটেড মেসেজিং অ্যাপ বিতরণ করুন

যেহেতু টেমপ্লেটেড মেসেজিং অভিজ্ঞতা সমর্থনকারী অ্যাপগুলি গুগল প্লে-তে শুধুমাত্র ইন্টারনাল টেস্টিং এবং ক্লোজড টেস্টিং ট্র্যাকেই প্রকাশ করা যায়, তাই আপনার এমন বিল্ডগুলিকে ওপেন টেস্টিং বা প্রোডাকশন ট্র্যাকে প্রমোট করা উচিত নয় যেগুলিতে এই সমর্থন অন্তর্ভুক্ত রয়েছে, কারণ ঐ ট্র্যাকগুলির বিল্ড সম্বলিত সাবমিশনগুলি বাতিল করা হবে।