ساختن تجربه‌های پیام‌رسانی الگودار برای Android Auto

تجربه‌های پیام‌رسانی الگودار در مرحله بتا است
درحال‌حاضر، همه می‌توانند برنامه‌های ارتباطی با تجربه پیام‌رسانی الگودار را در دسته‌های هدف آزمایشی داخلی و آزمایشی بسته در «فروشگاه Play» منتشر کنند. انتشار در دسته هدف آزمایشی باز و تولید در تاریخ دیگری مجاز خواهد بود.

علاوه‌بر تجربه پیام‌رسانی پایه با پشتیبانی اعلان برای خواندن و پاسخ دادن به پیام‌ها، Android Auto از تجربه‌های پیام‌رسانی غنی‌تر ساخته‌شده بااستفاده از کتابخانه برنامه Android برای ماشین‌ها پشتیبانی می‌کند.

از تجربه‌های پیام‌رسانی با پشتیبانی اعلان‌ها پشتیبانی کنید

همه برنامه‌هایی که از تجربه‌های پیام‌رسانی الگودار پشتیبانی می‌کنند باید اعلان‌های پیام‌رسانی را برای Android Auto گسترش دهند. این ادغام به کاربران امکان می‌دهد بدون نیاز به باز کردن برنامه الگو، پیام‌ها را بخوانند و به آن‌ها پاسخ دهند.

ساختن تجربه پیام‌رسانی با الگو

برای شروع ساختن تجربه الگودار برنامه، از راهنمایی‌های استفاده از «کتابخانه برنامه Android برای ماشین‌ها» و افزودن پشتیبانی از 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>

تنظیم حداقل سطح ای‌پی‌آی برنامه خودرو

ازآنجایی‌که ConversationItem API فقط در Car API 7 یا بالاتر پشتیبانی می‌شود، باید فراداده minCarApiLevel را نیز روی آن مقدار تنظیم کنید. برای کسب اطلاعات بیشتر، سطح Car App 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>

نمایش مکالمه‌ها

برای نمایش نمای کلی مکالمه‌های کاربر، می‌توانید فهرستی از ConversationItem اشیا در ListTemplate یا SectionedItemTemplate نمایش دهید.

برای داشتن تجربه کاربری خوب، توصیه می‌کنیم حداکثر ۵ تا ۱۰ مکالمه اخیر یا مهم‌ترین مکالمه‌ها را ارائه دهید، و برای هر مکالمه حداکثر ۵ پیام اخیر را ارائه دهید. این کار به بهبود عملکرد بار کردن کمک می‌کند، به کاربران امکان می‌دهد مرتبط‌ترین محتوا را ببینند، و زمان تعامل را کاهش می‌دهد.

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 به‌طور خودکار کنش‌های پخش پیام و علامت‌گذاری آن به‌عنوان خوانده‌شده و پاسخ دادن را نمایش می‌دهد. این کنش‌ها توسط ConversationCallbackDelegate که هنگام ساختن ConversationItem ارائه می‌دهید مدیریت می‌شود.

اگر برنامه‌تان میان‌برهای مکالمه ارائه می‌دهد، درستی‌سنجی کنید که شناسه ارائه‌شده هنگام ساختن ConversationItem با شناسه میان‌بر آن مکالمه یکسان باشد.

به‌روزرسانی مکالمه‌ها

هم‌زمان با ارسال و دریافت پیام توسط کاربران، باید صفحه‌های برنامه‌تان را با فراخوانی invalidate() بازآوری کنید تا پیام‌های جدید را دربر بگیرد. بازآوری محتوای الگو را ببینید.

برای داشتن بهترین تجربه کاربری، توصیه می‌کنیم زمان‌های بازآوری را ۵۰۰ میلی‌ثانیه یا کمتر نگه دارید. اگر بازآوری مکرر بیشتر طول می‌کشد، می‌توانید درحین بار کردن پیام‌های ورودی، وضعیت بار کردن را نمایش دهید.

اهمیت اعلان را به‌درستی تنظیم کنید

برای کاهش حواس‌پرتی، وقتی کاربر درحال استفاده از برنامه شما است یا مکالمه‌ای مربوط را مشاهده می‌کند، برنامه شما باید اهمیت اعلان‌های ورودی را کاهش دهد تا اعلان‌ها به‌عنوان اعلان‌های سر بالا (HUN) نمایش داده نشوند.

با مشاهده چرخه زندگی Screen که مکالمه را نمایش می‌دهد، می‌توانید پیگیری کنید که مکالمه قابل‌مشاهده است یا نه. چرخه عمر صفحه را ببینید.

برای جلوگیری از نمایش اعلان به‌عنوان HUN، اولویت را روی IMPORTANCE_DEFAULT یا پایین‌تر تنظیم کنید.

توزیع برنامه‌های پیام‌رسانی الگو

ازآنجایی‌که برنامه‌هایی که از تجربه‌های پیام‌رسانی الگودار پشتیبانی می‌کنند فقط می‌توانند در دسته‌های هدف «آزمایش داخلی» و «آزمایش بسته» در Google Play منتشر شوند، نباید ساخت‌هایی را که از دسته‌های هدف «آزمایش باز» یا «تولید» پشتیبانی می‌کنند تبلیغ کنید، زیرا ارسال‌هایی که حاوی ساخت‌های موجود در آن دسته‌های هدف باشند رد خواهند شد.