นอกจากประสบการณ์การรับส่งข้อความพื้นฐานที่ขับเคลื่อนด้วยการแจ้งเตือนสำหรับการอ่าน และตอบกลับข้อความแล้ว Android Auto ยังรองรับประสบการณ์การรับส่งข้อความที่สมบูรณ์ยิ่งขึ้น ซึ่งสร้างขึ้นโดยใช้ ไลบรารีแอป Android สำหรับรถยนต์
รองรับประสบการณ์การรับส่งข้อความที่ขับเคลื่อนด้วยการแจ้งเตือน
แอปทั้งหมดที่รองรับประสบการณ์การรับส่งข้อความแบบเทมเพลตต้องขยายการแจ้งเตือนการรับส่งข้อความสำหรับ Android Auto ด้วย การผสานรวมนี้ช่วยให้ผู้ใช้อ่านและตอบกลับข้อความได้โดยไม่ต้องเปิดแอปแบบเทมเพลต
สร้างประสบการณ์การรับส่งข้อความแบบเทมเพลต
ทำตามคำแนะนำในหัวข้อ ใช้ไลบรารีแอป Android สำหรับรถยนต์ และ เพิ่ม การรองรับ Android Auto ลงในแอปแบบเทมเพลต เพื่อเริ่มต้น สร้างประสบการณ์แบบเทมเพลตของแอป จากนั้นดูคำแนะนำในหน้านี้เพื่อทำความเข้าใจข้อกำหนดเฉพาะสำหรับแอปรับส่งข้อความแบบเทมเพลต
กำหนดค่าไฟล์ Manifest ของแอป
แอปต้องทำสิ่งต่อไปนี้เพื่อแจ้งให้ Android Auto ทราบถึงความสามารถของแอป
ประกาศการรองรับหมวดหมู่ในไฟล์ Manifest
แอปต้องประกาศandroidx.car.app.category.MESSAGING หมวดหมู่แอปในรถยนต์ในตัวกรอง Intent ของ
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>
ตั้งค่า Car App API ระดับต่ำสุด
เนื่องจาก API ConversationItem รองรับเฉพาะ
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>
หากแอปสามารถตั้งค่าเป็น ตัวจัดการ SMS เริ่มต้นได้,
ให้ใส่องค์ประกอบ <uses> ต่อไปนี้ หากไม่ใส่ ระบบจะใช้ตัวจัดการเริ่มต้นที่สร้างขึ้นใน Android Auto เพื่อจัดการข้อความ SMS/MMS ขาเข้า ซึ่งอาจทำให้เกิดการแจ้งเตือนซ้ำ
<automotiveApp>
...
<uses name="sms" />
</automotiveApp>
แสดงการสนทนา
หากต้องการแสดงภาพรวมของการสนทนาของผู้ใช้ คุณสามารถแสดงรายการออบเจ็กต์
ConversationItem ใน
ListTemplate หรือ
SectionedItemTemplate
เราขอแนะนำให้แสดงการสนทนาล่าสุดหรือสำคัญที่สุดไม่เกิน 5-10 รายการ และแสดงข้อความล่าสุดไม่เกิน 5 รายการสำหรับการสนทนาแต่ละรายการ เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดี ซึ่งจะช่วยปรับปรุงประสิทธิภาพการโหลด ช่วยให้ผู้ใช้เห็นเนื้อหาที่เกี่ยวข้องมากที่สุด และลดเวลาในการโต้ตอบ
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() ดูรีเฟรช
เนื้อหาของเทมเพลต
เราขอแนะนำให้ใช้เวลารีเฟรชไม่เกิน 500 มิลลิวินาทีเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีที่สุด หากการรีเฟรชบ่อยครั้งใช้เวลานานขึ้น คุณสามารถแสดงสถานะการโหลดขณะโหลดข้อความขาเข้าได้
ตั้งค่าความสำคัญของการแจ้งเตือนอย่างเหมาะสม
แอปควรลดความสำคัญของการแจ้งเตือนขาเข้าเมื่อผู้ใช้กำลังใช้หรือดูการสนทนาที่เกี่ยวข้อง เพื่อไม่ให้การแจ้งเตือนปรากฏเป็นการแจ้งเตือนแบบป๊อปอัป (HUN)
คุณสามารถติดตามว่าการสนทนาปรากฏอยู่หรือไม่โดยสังเกตวงจรการทำงานของ Screen ที่แสดงการสนทนานั้น ดูวงจรการทำงานของหน้าจอ
หากต้องการป้องกันไม่ให้การแจ้งเตือนปรากฏเป็น HUN ให้ตั้งค่าลำดับความสำคัญเป็น
IMPORTANCE_DEFAULT หรือต่ำกว่า
เผยแพร่แอปรับส่งข้อความแบบเทมเพลต
เนื่องจากแอปที่รองรับประสบการณ์การรับส่งข้อความแบบเทมเพลตจะเผยแพร่ได้เฉพาะแทร็กการทดสอบภายในและการทดสอบแบบปิดใน Google Play คุณจึงไม่ควรโปรโมตบิลด์ที่รวมการรองรับแทร็กการทดสอบแบบเปิดหรือแทร็กเวอร์ชันที่ใช้งานจริง เนื่องจากระบบจะปฏิเสธการส่งที่ประกอบด้วยบิลด์ในแทร็กเหล่านั้น