মেসেজ পড়া ও উত্তর দেওয়ার জন্য সাধারণ বিজ্ঞপ্তি-চালিত মেসেজিং অভিজ্ঞতা ছাড়াও, Android Auto আরও উন্নত মেসেজিং অভিজ্ঞতা সাপোর্ট করে যা Android for Cars অ্যাপ লাইব্রেরি ব্যবহার করে তৈরি করা হয়েছে।
বিজ্ঞপ্তি-চালিত মেসেজিং অভিজ্ঞতা
টেমপ্লেট মেসেজিং অভিজ্ঞতা কাজ করে এমন সব অ্যাপকে অবশ্যই Android Auto-এর জন্য মেসেজিং বিজ্ঞপ্তি বাড়াতে হবে। এই ইন্টিগ্রেশন ব্যবহারকারীদের টেমপ্লেট অ্যাপ না খুলেই মেসেজ পড়তে ও উত্তর দিতে দেয়।
টেমপ্লেট-ভিত্তিক মেসেজিং অভিজ্ঞতা তৈরি করা
আপনার অ্যাপের টেমপ্লেট অভিজ্ঞতা তৈরি করা শুরু করতে, Cars-এর জন্য Android অ্যাপ লাইব্রেরি ব্যবহার করুন এবং আপনার টেমপ্লেট অ্যাপে 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>
আপনার অ্যাপকে ডিফল্ট এসএমএস হ্যান্ডলার হিসেবে সেট করা গেলে,
নিচে উল্লেখ করা <uses> এলিমেন্ট অন্তর্ভুক্ত করতে ভুলবেন না। আপনি তা না করলে, Android Auto-তে বিল্ট-ইন থাকা ডিফল্ট
হ্যান্ডলার ইনকামিং এসএমএস/এমএমএস
মেসেজ হ্যান্ডেল করার জন্য ব্যবহার করা হবে, এর ফলে ডুপ্লিকেট বিজ্ঞপ্তি দেখানো হতে পারে।
<automotiveApp>
...
<uses name="sms" />
</automotiveApp>
কথোপকথন ডিসপ্লে করা
ব্যবহারকারীর কথোপকথনের ওভারভিউ দেখাতে, আপনি
ListTemplate বা
SectionedItemTemplate-এ
ConversationItem অবজেক্টের তালিকা দেখাতে পারেন।
ভালো ব্যবহারকারীর অভিজ্ঞতার জন্য, আমরা সর্বাধিক ৫-১০টি সবচেয়ে সাম্প্রতিক বা সবচেয়ে গুরুত্বপূর্ণ কথোপকথন প্রদান করার সাজেশন দিই, প্রতিটি কথোপকথনের জন্য ৫টির বেশি সবচেয়ে সাম্প্রতিক মেসেজ যেন না থাকে। এটি লোডিং পারফর্ম্যান্স উন্নত করতে, ব্যবহারকারীদের সবচেয়ে প্রাসঙ্গিক কন্টেন্ট দেখাতে এবং ইন্টার্যাকশন টাইম কমাতে সাহায্য করে।
class MyMessagingScreen(carContext: CarContext) : Screen(carContext) { override fun onGetTemplate(): Template { val itemListBuilder = ItemList.Builder() val conversations: List<MyConversation> = getConversations() // 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( conversation.id, CarText.create(conversation.title), Person.Builder() .setName("Me") .setKey("self_id") .build(), carMessages, myConversationCallback ) .build() ) } val header = Header.Builder() .setStartHeaderAction(Action.APP_ICON) .setTitle("Conversations") .build() return ListTemplate.Builder() .setHeader(header) .setSingleList(itemListBuilder.build()) .build() } }
প্রতিটি ConversationItem অটোমেটিক মেসেজ চালানোর
অ্যাকশন দেখায় এবং এটি পড়া হয়েছে হিসেবে চিহ্নিত করে ও উত্তর দেয়। ConversationItem তৈরি করার সময় আপনি যে
ConversationCallbackDelegate প্রদান করেন, সেটি এইসব অ্যাকশন
ম্যানেজ করে।
আপনার অ্যাপ কথোপকথন শর্টকাট প্রদান করলে, যাচাই করে নিন যে ConversationItem তৈরি করার সময় যে আইডি প্রদান করা হয়েছে সেটি
সেই কথোপকথনের শর্টকাটের আইডির
সাথে একই।
কথোপকথন আপডেট করা
ব্যবহারকারীরা মেসেজ পাঠানো ও পাওয়া চালিয়ে গেলে, আপনাকে invalidate() কল করে নতুন মেসেজ যোগ করার জন্য
আপনার অ্যাপের স্ক্রিন রিফ্রেশ করতে হবে। টেমপ্লেটের কন্টেন্ট
রিফ্রেশ করা দেখুন।
ব্যবহারকারীর সেরা অভিজ্ঞতার জন্য, আমরা রিফ্রেশ করার সময়কে ৫০০ মিলি সেকেন্ড বা তার কম রাখার সাজেশন দিই। ঘন ঘন রিফ্রেশ করতে বেশি সময় লাগলে, আপনি ইনকামিং মেসেজ লোড করার সময় একটি লোডিং স্টেট দেখাতে পারেন।
বিজ্ঞপ্তির গুরুত্ব সঠিকভাবে সেট করা
মনোযোগ যাতে না সরে যায়, সেই জন্য কোনও ব্যবহারকারী যখন সংশ্লিষ্ট কথোপকথন দেখছেন, তখন আপনার অ্যাপকে ইনকামিং বিজ্ঞপ্তির গুরুত্ব কমাতে হবে, যাতে বিজ্ঞপ্তিগুলি হেডস-আপ বিজ্ঞপ্তি (HUN) হিসেবে না দেখানো হয়।
যে
Screen কথোপকথনটি দেখায়, সেটির লাইফসাইকেল দেখে আপনি ট্র্যাক করতে পারবেন যে সেটি দেখা যাচ্ছে কিনা। স্ক্রিনের লাইফসাইকেল দেখুন।
কোনও বিজ্ঞপ্তি যাতে HUN হিসেবে না দেখানো হয়, তার জন্য অগ্রাধিকার
IMPORTANCE_DEFAULT বা তার নিচে সেট করুন।
টেমপ্লেটযুক্ত মেসেজিং অ্যাপ ডিস্ট্রিবিউট করা
টেমপ্লেট মেসেজিং অভিজ্ঞতা কাজ করে এমন অ্যাপ শুধুমাত্র Google Play-তে ইন্টার্নাল টেস্টিং ও ক্লোজড টেস্টিং ট্র্যাকে প্রকাশ করা যায়। তাই, ওপেন টেস্টিং বা প্রোডাকশন ট্র্যাকে কাজ করে এমন বিল্ড প্রচার করবেন না। কারণ, সেইসব ট্র্যাকে বিল্ড জমা দিলে তা বাতিল করে দেওয়া হবে।