علاوه بر تجربه پیامرسانی مبتنی بر اعلانها برای خواندن و پاسخ به پیامها، Android Auto از تجربههای پیامرسانی غنیتری که با استفاده از کتابخانه برنامه Android for Cars ساخته شده است، پشتیبانی میکند.
از تجربیات پیام رسانی مبتنی بر اعلان پشتیبانی کنید
همه برنامههایی که از تجربههای پیامرسانی الگو پشتیبانی میکنند باید اعلانهای پیامرسانی را برای Android Auto نیز گسترش دهند . این تضمین می کند که کاربران قادر به خواندن و پاسخ به پیام ها بدون نیاز به باز کردن برنامه قالب هستند.
یک تجربه پیامرسانی الگو بسازید
دستورالعملهای موجود در استفاده از کتابخانه برنامه Android for Cars را دنبال کنید و پشتیبانی از Android Auto را به برنامه قالببندیشده خود اضافه کنید تا ساخت تجربه الگوی برنامهتان را شروع کنید. سپس، برای درک الزامات خاص برای برنامههای پیامرسانی الگو، به راهنمای این صفحه مراجعه کنید.
فایل های مانیفست برنامه خود را پیکربندی کنید
برای اطلاع دادن Android Auto از قابلیت های برنامه خود، برنامه شما باید موارد زیر را انجام دهد:
پشتیبانی از دسته را در مانیفست خود اعلام کنید
برنامه شما باید دسته برنامه ماشین androidx.car.app.category.MESSAGING
را در فیلتر هدف CarAppService
خود اعلام کند.
<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
که برای اعلام پشتیبانی از Android Auto استفاده میکنید، مطمئن شوید که قابلیتهای notification
و template
اعلام شدهاند:
<automotiveApp>
<uses name="notification" />
<uses name="template" />
</automotiveApp>
اگر برنامه شما را میتوان بهعنوان کنترلکننده پیشفرض پیامک تنظیم کرد، مطمئن شوید که عنصر <uses>
زیر را لحاظ کنید. اگر این کار را نکنید، یک کنترلکننده پیشفرض تعبیهشده در Android Auto برای مدیریت پیامهای SMS/MMS دریافتی استفاده میشود که میتواند منجر به اعلانهای تکراری شود.
<automotiveApp>
...
<uses name="sms" />
</automotiveApp>
نمایش مکالمات
برای نمایش یک نمای کلی از مکالمات کاربر، میتوانید فهرستی از اشیاء ConversationItem
را در ListTemplate
یا SectionedItemTemplate
نمایش دهید.
برای بهترین تجربه کاربری، توصیه میکنیم حداکثر 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
به طور خودکار اقداماتی را برای پخش یک پیام و علامت گذاری آن به عنوان خوانده شده و برای پاسخ نمایش می دهد. این اقدامات توسط ConversationCallbackDelegate
که هنگام ساخت ConversationItem
ارائه میکنید، انجام میشود.
اگر برنامه شما میانبرهای مکالمه ارائه می دهد، مطمئن شوید که شناسه ارائه شده هنگام ساخت ConversationItem
با شناسه میانبر آن مکالمه یکسان است.
مکالمات را به روز کنید
همانطور که کاربران پیامها را ارسال و دریافت میکنند، باید با فراخوانی invalidate()
صفحههای برنامهتان را بهروزرسانی کنید تا پیامهای جدید در آن گنجانده شود. به بازخوانی محتویات یک الگو مراجعه کنید.
برای بهترین تجربه کاربری، توصیه میکنیم زمان بهروزرسانی را تا 500 میلیثانیه یا کمتر نگه دارید. اگر بهروزرسانی مکرر بیشتر طول میکشد، میتوانید هنگام بارگیری پیامهای دریافتی، وضعیت بارگیری را نمایش دهید.
اهمیت اعلان را به درستی تنظیم کنید
برای کاهش حواسپرتیها، برنامه شما باید اهمیت اعلانهای دریافتی را زمانی که کاربر از مشاهده مکالمه مربوطه استفاده میکند، کم کند تا اعلانها بهعنوان اعلانهای اصلی (HUN) ظاهر نشوند.
میتوانید با مشاهده چرخه عمر Screen
که مکالمه را نمایش میدهد، مشاهده کنید. چرخه عمر یک صفحه نمایش را ببینید.
برای جلوگیری از نمایش اعلان به عنوان HUN، اولویت را روی IMPORTANCE_DEFAULT
یا کمتر تنظیم کنید.
برنامه های پیام رسانی الگو را توزیع کنید
از آنجایی که برنامههایی که از تجربههای پیامرسانی الگو پشتیبانی میکنند، فقط میتوانند در آهنگهای آزمایش داخلی و آزمایش بسته در Google Play منتشر شوند، نباید ساختهایی را که شامل پشتیبانی از مسیرهای آزمایش باز یا تولید هستند، تبلیغ کنید، زیرا ارسالهایی که حاوی ساختهای مربوط به آن آهنگها هستند رد میشوند.