Android Auto, mesajları okuma ve yanıtlama için temel bildirim destekli mesajlaşma deneyimine ek olarak Arabalar için Android Uygulama Kitaplığı kullanılarak oluşturulan daha zengin mesajlaşma deneyimlerini de destekler.
Bildirim destekli mesajlaşma deneyimlerini destekleme
Şablonlu mesajlaşma deneyimlerini destekleyen tüm uygulamalar Android Auto için mesajlaşma bildirimlerini de genişletmelidir. Bu entegrasyon, kullanıcıların şablonlu uygulamayı açmak zorunda kalmadan iletileri okuyup yanıtlamasına olanak tanır.
Şablonlu bir mesajlaşma deneyimi oluşturma
Uygulamanızın şablonlu deneyimini oluşturmaya başlamak için Arabalar için Android Uygulama Kitaplığı'nı kullanma ve Şablonlu uygulamanıza Android Auto desteği ekleme başlıklı makalelerdeki yönergeleri uygulayın. Ardından, şablonlu mesajlaşma uygulamalarıyla ilgili özel gereksinimleri anlamak için bu sayfadaki yönergeleri inceleyin.
Uygulamanızın manifest dosyalarını yapılandırma
Uygulamanızın özelliklerini Android Auto'ya bildirmek için uygulamanızın aşağıdakileri yapması gerekir:
Manifest dosyanızda kategori desteğini bildirin
Uygulamanız, CarAppService manifest dosyasının intent filtresinde androidx.car.app.category.MESSAGING araba uygulaması kategorisini beyan etmelidir.
<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>
Minimum araba uygulaması API düzeyini ayarlama
ConversationItem API yalnızca Car API 7 veya sonraki sürümlerde desteklendiğinden minCarApiLevel meta verilerini de bu değere ayarlamanız gerekir. Daha fazla bilgi için Car App API Düzeyi'ne bakın.
<application ...>
...
<meta-data
android:name="androidx.car.app.minCarApiLevel"
android:value="7"/>
...
</application>
Android Auto desteğini beyan etme
automotive_app_desc.xml dosyasında, Android Auto desteğini bildirmek için kullandığınız notification ve template özelliklerinin her ikisinin de tanımlandığını doğrulayın:
<automotiveApp>
<uses name="notification" />
<uses name="template" />
</automotiveApp>
Uygulamanız varsayılan SMS işleyici olarak ayarlanabiliyorsa aşağıdaki <uses> öğesini eklediğinizden emin olun. Aksi takdirde, gelen SMS/MMS mesajlarını işlemek için Android Auto'da yerleşik bir varsayılan işleyici kullanılır. Bu durum, yinelenen bildirimlere yol açabilir.
<automotiveApp>
...
<uses name="sms" />
</automotiveApp>
Görüşmeleri görüntüleme
Kullanıcının görüşmelerine genel bir bakış sunmak için ConversationItem nesnelerinin listesini ListTemplate veya SectionedItemTemplate içinde gösterebilirsiniz.
İyi bir kullanıcı deneyimi için en fazla 5-10 en son veya en önemli görüşmeyi sağlamanızı öneririz. Her görüşme için en fazla 5 en son mesajı ekleyin. Bu sayede yükleme performansı iyileştirilir, kullanıcılar en alakalı içeriği görür ve etkileşim süresi kısalır.
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()
}
}
Her ConversationItem, mesaj çalma, okundu olarak işaretleme ve yanıtlama işlemlerini otomatik olarak gösterir. Bu işlemler, ConversationItem oluşturulurken sağladığınız ConversationCallbackDelegate tarafından gerçekleştirilir.
Uygulamanız görüşme kısayolları sunuyorsa ConversationItem oluşturulurken sağlanan kimliğin, söz konusu görüşme kısayolunun kimliğiyle aynı olduğunu doğrulayın.
Görüşmeleri güncelleme
Kullanıcılar mesaj gönderip aldıkça invalidate() işlevini çağırarak yeni mesajları eklemek için uygulamanızın ekranlarını yenilemeniz gerekir. Şablon içeriklerini yenileme başlıklı makaleyi inceleyin.
En iyi kullanıcı deneyimi için yenileme sürelerini 500 milisaniye veya daha kısa tutmanızı öneririz. Sık yenileme işlemi daha uzun sürüyorsa gelen iletileri yüklerken bir yükleme durumu gösterebilirsiniz.
Bildirimlerin önemini uygun şekilde ayarlama
Dikkat dağıtıcı unsurları azaltmak için uygulamanız, kullanıcı ilgili bir ileti dizisini görüntülerken gelen bildirimlerin önemini düşürmelidir. Böylece bildirimler, uyarı bildirimleri (HUN) olarak görünmez.
Bir görüşmenin görünür olup olmadığını, görüşmeyi gösteren Screen öğesinin yaşam döngüsünü gözlemleyerek takip edebilirsiniz. Ekranın yaşam döngüsü başlıklı makaleyi inceleyin.
Bir bildirimin HUN olarak görünmesini önlemek için önceliği IMPORTANCE_DEFAULT veya daha düşük bir değere ayarlayın.
Şablonlu mesajlaşma uygulamalarını dağıtma
Şablonlu mesajlaşma deneyimlerini destekleyen uygulamalar yalnızca Google Play'deki dahili test ve kapalı test kanallarında yayınlanabildiğinden, açık test veya üretim kanallarında destek içeren derlemeleri tanıtmamalısınız. Aksi takdirde, bu kanallardaki derlemeleri içeren gönderimler reddedilir.