Selain pengalaman pesan yang didukung notifikasi dasar 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. Hal ini memastikan bahwa pengguna dapat membaca dan membalas pesan tanpa harus membuka aplikasi dengan template.
Membuat pengalaman pesan dengan template
Ikuti panduan di Menggunakan Library Aplikasi Android untuk Mobil dan Menambahkan dukungan untuk Android Auto ke aplikasi dengan template untuk mulai mem-build pengalaman template aplikasi Anda. Kemudian, lihat panduan di halaman ini untuk memahami persyaratan khusus bagi aplikasi pesan dengan 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 kategori
aplikasi mobil androidx.car.app.category.MESSAGING
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 ConversationItem
API hanya didukung di Car
API 7 atau yang lebih tinggi, Anda juga harus menetapkan metadata minCarApiLevel
ke nilai
tersebut. Lihat API Level 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, pastikan 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
di
ListTemplate
atau
SectionedItemTemplate
.
Untuk pengalaman pengguna terbaik, sebaiknya sediakan maksimal 5-10 percakapan terbaru atau terpenting, dengan tidak lebih dari 5 pesan terbaru untuk setiap percakapan. Hal ini membantu meningkatkan performa pemuatan, memastikan 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 telah dibaca serta untuk membalas. Tindakan tersebut ditangani oleh
ConversationCallbackDelegate
yang Anda berikan saat
mem-build ConversationItem
.
Jika aplikasi Anda menyediakan pintasan percakapan, pastikan
ID yang diberikan saat mem-build 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 hingga 500 milidetik atau kurang. Jika refresh sering kali 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 tingkat kepentingan notifikasi yang masuk saat pengguna menggunakan aplikasi Anda untuk melihat percakapan yang sesuai sehingga notifikasi tidak muncul sebagai notifikasi peringatan (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 yang lebih rendah.
Mendistribusikan aplikasi pesan dengan template
Karena aplikasi yang mendukung pengalaman pesan dengan 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.