Selain pengalaman pesan dasar yang didukung notifikasi untuk membaca dan membalas pesan, Android Auto mendukung pengalaman pesan yang lebih kaya yang dibuat menggunakan Library Aplikasi Android untuk Mobil.
Mendukung pengalaman fitur pesan yang didukung notifikasi
Semua aplikasi yang mendukung pengalaman pesan dengan template juga harus memperluas notifikasi pesan untuk Android Auto. Integrasi ini memungkinkan pengguna membaca dan membalas pesan tanpa harus membuka aplikasi yang dibuat dengan template.
Membangun pengalaman pesan berbasis template
Ikuti panduan di Menggunakan Library Aplikasi Android untuk Mobil dan Menambahkan dukungan untuk Android Auto ke aplikasi dengan template untuk mulai membangun pengalaman dengan template aplikasi Anda. Kemudian, lihat panduan di halaman ini untuk memahami persyaratan khusus aplikasi pesan ber-template.
Mengonfigurasi file manifes aplikasi Anda
Untuk memberi tahu Android Auto tentang kemampuan aplikasi Anda, aplikasi Anda harus melakukan hal berikut:
Mendeklarasikan dukungan kategori dalam manifes Anda
Aplikasi Anda harus mendeklarasikan androidx.car.app.category.MESSAGING kategori aplikasi mobil dalam filter 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>
Menetapkan level API aplikasi mobil minimum
Karena API ConversationItem hanya didukung di Car
API 7 atau yang lebih tinggi, Anda juga harus menetapkan metadata minCarApiLevel ke
nilai tersebut. Lihat Level API Aplikasi Mobil untuk mengetahui informasi selengkapnya.
<application ...>
...
<meta-data
android:name="androidx.car.app.minCarApiLevel"
android:value="7"/>
...
</application>
Mendeklarasikan dukungan Android Auto
Dalam file automotive_app_desc.xml yang Anda gunakan untuk mendeklarasikan dukungan
Android Auto, verifikasi bahwa kemampuan notification dan
template dideklarasikan:
<automotiveApp>
<uses name="notification" />
<uses name="template" />
</automotiveApp>
Jika aplikasi Anda dapat ditetapkan sebagai pengendali SMS default,
pastikan untuk menyertakan elemen <uses> berikut. Jika tidak, pengendali
default bawaan Android Auto akan digunakan untuk menangani pesan SMS/MMS yang masuk, yang dapat menyebabkan notifikasi duplikat.
<automotiveApp>
...
<uses name="sms" />
</automotiveApp>
Menampilkan percakapan
Untuk menampilkan ringkasan percakapan pengguna, Anda dapat menampilkan daftar objek
ConversationItem dalam
ListTemplate atau
SectionedItemTemplate.
Untuk pengalaman pengguna yang baik, sebaiknya berikan maksimal 5-10 percakapan terbaru atau terpenting, dengan tidak lebih dari 5 pesan terbaru untuk setiap percakapan. Hal ini membantu meningkatkan performa pemuatan, memungkinkan pengguna melihat konten yang paling relevan, dan mengurangi waktu interaksi.
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()
}
}
Setiap ConversationItem otomatis menampilkan tindakan untuk memutar pesan
dan menandainya sebagai sudah dibaca serta untuk membalas. Tindakan tersebut ditangani oleh
ConversationCallbackDelegate yang Anda berikan saat
membuat ConversationItem.
Jika aplikasi Anda menyediakan pintasan percakapan, verifikasi
bahwa ID yang diberikan saat membuat ConversationItem sama dengan
ID untuk pintasan percakapan tersebut.
Memperbarui percakapan
Saat pengguna mengirim dan menerima pesan, Anda harus memuat ulang layar aplikasi untuk menyertakan pesan baru dengan memanggil invalidate(). Lihat Memuat ulang
konten template.
Untuk pengalaman pengguna terbaik, sebaiknya pertahankan waktu refresh 500 milidetik atau kurang. Jika penyegaran sering memerlukan waktu lebih lama, Anda dapat menampilkan status pemuatan saat memuat pesan masuk.
Menetapkan nilai penting notifikasi dengan tepat
Untuk mengurangi gangguan, aplikasi Anda harus menurunkan nilai penting notifikasi masuk saat pengguna sedang melihat percakapan yang sesuai sehingga notifikasi tidak muncul sebagai notifikasi pop-up (HUN).
Anda dapat melacak apakah percakapan terlihat dengan mengamati siklus proses
Screen yang menampilkannya. Lihat Siklus proses layar.
Untuk mencegah notifikasi muncul sebagai HUN, tetapkan prioritas ke
IMPORTANCE_DEFAULT atau lebih rendah.
Mendistribusikan aplikasi pesan berbasis template
Karena aplikasi yang mendukung pengalaman pesan berbasis template hanya dapat dipublikasikan ke jalur Pengujian Internal dan Pengujian Tertutup di Google Play, Anda tidak boleh mempromosikan build yang menyertakan dukungan ke jalur Pengujian Terbuka atau Produksi, karena pengiriman yang berisi build di jalur tersebut akan ditolak.