বার্তাগুলি পড়ার এবং উত্তর দেওয়ার জন্য প্রাথমিক বিজ্ঞপ্তি-চালিত মেসেজিং অভিজ্ঞতা ছাড়াও, Android Auto গাড়ির অ্যাপ লাইব্রেরির জন্য Android ব্যবহার করে তৈরি আরও সমৃদ্ধ মেসেজিং অভিজ্ঞতা সমর্থন করে৷
বিজ্ঞপ্তি-চালিত মেসেজিং অভিজ্ঞতা সমর্থন করে
টেমপ্লেটেড মেসেজিং অভিজ্ঞতা সমর্থন করে এমন সমস্ত অ্যাপকে অবশ্যই Android Auto-এর জন্য মেসেজিং বিজ্ঞপ্তি প্রসারিত করতে হবে। এটি নিশ্চিত করে যে ব্যবহারকারীরা টেমপ্লেটেড অ্যাপ না খুলেই বার্তা পড়তে এবং উত্তর দিতে সক্ষম।
একটি টেমপ্লেটেড মেসেজিং অভিজ্ঞতা তৈরি করুন
আপনার অ্যাপের টেমপ্লেট করা অভিজ্ঞতা তৈরি করা শুরু করতে আপনার টেমপ্লেট করা অ্যাপে Android Auto-এর জন্য Cars অ্যাপ লাইব্রেরি ব্যবহার করুন এবং 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
মেটাডেটাও সেই মান সেট করা উচিত। আরও তথ্যের জন্য কার অ্যাপ API লেভেল দেখুন।
<application ...>
...
<meta-data
android:name="androidx.car.app.minCarApiLevel"
android:value="7"/>
...
</application>
Android Auto সমর্থন ঘোষণা করুন
automotive_app_desc.xml
ফাইলে যেটি আপনি Android Auto সমর্থন ঘোষণা করতে ব্যবহার করেন, নিশ্চিত করুন যে notification
এবং template
উভয় ক্ষমতাই ঘোষণা করা হয়েছে:
<automotiveApp>
<uses name="notification" />
<uses name="template" />
</automotiveApp>
যদি আপনার অ্যাপটিকে ডিফল্ট এসএমএস হ্যান্ডলার হিসেবে সেট করা যায়, তাহলে নিচের <uses>
উপাদানটি অন্তর্ভুক্ত করতে ভুলবেন না। আপনি যদি তা না করেন, তাহলে আগত এসএমএস/এমএমএস বার্তাগুলি পরিচালনা করতে Android Auto-এ বিল্ট-ইন একটি ডিফল্ট হ্যান্ডলার ব্যবহার করা হবে, যার ফলে ডুপ্লিকেট বিজ্ঞপ্তি আসতে পারে।
<automotiveApp>
...
<uses name="sms" />
</automotiveApp>
কথোপকথন প্রদর্শন করুন
একজন ব্যবহারকারীর কথোপকথনের একটি ওভারভিউ প্রদর্শন করতে, আপনি একটি ListTemplate
বা SectionedItemTemplate
এ ConversationItem
অবজেক্টের একটি তালিকা প্রদর্শন করতে পারেন।
সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, আমরা প্রতিটি কথোপকথনের জন্য সর্বাধিক 5-10টি সাম্প্রতিক বা সবচেয়ে গুরুত্বপূর্ণ কথোপকথন প্রদান করার পরামর্শ দিই, যার মধ্যে 5টির বেশি সাম্প্রতিক বার্তা নেই৷ এটি লোডিং কর্মক্ষমতা উন্নত করতে সাহায্য করে, ব্যবহারকারীরা সবচেয়ে প্রাসঙ্গিক বিষয়বস্তু দেখতে পান এবং মিথস্ক্রিয়া সময় কমায়।
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()
কল করে নতুন বার্তাগুলি অন্তর্ভুক্ত করতে আপনার অ্যাপের স্ক্রীন রিফ্রেশ করা উচিত। একটি টেমপ্লেটের বিষয়বস্তু রিফ্রেশ দেখুন।
সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, আমরা রিফ্রেশের সময় 500 মিলিসেকেন্ড বা তার কম রাখার পরামর্শ দিই। যদি ঘন ঘন রিফ্রেশ করতে বেশি সময় লাগে, আপনি ইনকামিং বার্তাগুলি লোড করার সময় একটি লোডিং অবস্থা প্রদর্শন করতে পারেন।
বিজ্ঞপ্তির গুরুত্ব যথাযথভাবে সেট করুন
বিভ্রান্তি কমানোর জন্য, আপনার অ্যাপটি ইনকামিং বিজ্ঞপ্তিগুলির গুরুত্ব কমিয়ে দেবে যখন কোনও ব্যবহারকারী আপনার সংশ্লিষ্ট কথোপকথনটি দেখছেন যাতে বিজ্ঞপ্তিগুলি হেড আপ নোটিফিকেশন (HUNs) হিসাবে উপস্থিত না হয়৷
একটি কথোপকথন দৃশ্যমান কিনা তা আপনি ট্র্যাক করতে পারেন Screen
জীবনচক্র যা এটি প্রদর্শন করে তা পর্যবেক্ষণ করে। একটি পর্দার জীবনচক্র দেখুন।
একটি HUN হিসাবে একটি বিজ্ঞপ্তি উপস্থিত হওয়া থেকে আটকাতে, অগ্রাধিকারটি IMPORTANCE_DEFAULT
বা কম সেট করুন৷
টেমপ্লেটেড মেসেজিং অ্যাপ বিতরণ করুন
যেহেতু টেমপ্লেটেড মেসেজিং অভিজ্ঞতা সমর্থন করে এমন অ্যাপগুলি শুধুমাত্র Google Play-তে অভ্যন্তরীণ টেস্টিং এবং ক্লোজড টেস্টিং ট্র্যাকগুলিতে প্রকাশ করা যেতে পারে, তাই আপনার বিল্ডগুলিকে উন্নীত করা উচিত নয় যাতে ওপেন টেস্টিং বা প্রোডাকশন ট্র্যাকগুলির সমর্থন অন্তর্ভুক্ত থাকে, কারণ সেই ট্র্যাকগুলিতে বিল্ড রয়েছে এমন জমাগুলি প্রত্যাখ্যান করা হবে৷