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

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

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

বিজ্ঞপ্তি-চালিত মেসেজিং অভিজ্ঞতা সমর্থন করুন

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

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

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

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

আপনার অ্যাপের ক্ষমতা সম্পর্কে 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 লেভেল দেখুন।

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

Android Auto সাপোর্ট ঘোষণা করুন

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

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

যদি আপনার অ্যাপটি ডিফল্ট SMS হ্যান্ডলার হিসেবে সেট করা যায়, তাহলে নিম্নলিখিত <uses> উপাদানটি অন্তর্ভুক্ত করতে ভুলবেন না। যদি না করেন, তাহলে Android Auto-তে অন্তর্নির্মিত একটি ডিফল্ট হ্যান্ডলার ইনকামিং SMS/MMS বার্তা পরিচালনা করার জন্য ব্যবহার করা হবে, যার ফলে ডুপ্লিকেট বিজ্ঞপ্তি আসতে পারে।

<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 বা তার কম সেট করুন।

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

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