Android Auto için şablonlu mesajlaşma deneyimleri oluşturma

Şablonlu mesajlaşma deneyimleri beta sürümündedir
Şu anda herkes, şablonlu mesajlaşma deneyimleri sunan iletişim uygulamalarını Play Store'daki dahili test ve kapalı test kanallarında yayınlayabilir. Açık test ve üretim kanallarına yayınlamaya daha sonra izin verilecek.

Android Auto, mesajları okumak ve yanıtlamak için bildirim destekli temel mesajlaşma deneyiminin yanı sıra 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 sayede kullanıcılar, şablon uygulamayı açmak zorunda kalmadan iletileri okuyabilir ve yanıtlayabilir.

Şablonlu bir mesajlaşma deneyimi oluşturma

Uygulamanızın şablon deneyimini oluşturmaya başlamak için Arabalar için Android uygulama kitaplığını kullanma ve Şablon uygulamanıza Android Auto desteği ekleme başlıklı makalelerdeki talimatları uygulayın. Ardından, şablonlu mesajlaşma uygulamalarına yönelik özel koşulları anlamak için bu sayfadaki yönergelere bakın.

Uygulamanızın manifest dosyalarını yapılandırma

Android Auto'yu uygulamanızın özellikleri hakkında bilgilendirmek için uygulamanızın aşağıdakileri yapması gerekir:

Manifest'inizde kategori desteğini belirtme

Uygulamanızın, CarAppService'in intent filtresinde androidx.car.app.category.MESSAGING araç uygulaması kategorisini beyan etmesi gerekir.

<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 CarAPI 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 Level başlıklı makaleyi inceleyin.

<application ...>
    ...
    <meta-data
        android:name="androidx.car.app.minCarApiLevel"
        android:value="7"/>
    ...
</application>

Android Auto desteğini beyan etme

Android Auto desteğini beyan etmek için kullandığınız automotive_app_desc.xml dosyasında hem notification hem de template özelliklerinin beyan edildiğinden emin olun:

<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'ya yerleşik bir varsayılan işleyici kullanılır. Bu da yinelenen bildirimlere neden olabilir.

<automotiveApp>
    ...
    <uses name="sms" />
</automotiveApp>

Görüşmeleri görüntüleme

Bir kullanıcının ileti dizilerine genel bakış sunmak için ConversationItem nesnelerinin listesini ListTemplate veya SectionedItemTemplate içinde gösterebilirsiniz.

En iyi kullanıcı deneyimi için en fazla 5-10 en son veya en önemli ileti dizisini, her ileti dizisinde en fazla 5 en son iletiyle birlikte sağlamanızı öneririz. Bu, yükleme performansını artırmaya yardımcı olur, kullanıcıların en alakalı içeriği görmesini sağlar ve etkileşim süresini azaltı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, bir mesajı oynatma, okunmuş olarak işaretleme ve yanıtlama işlemlerini otomatik olarak gösterir. Bu işlemler, ConversationItem oluştururken sağladığınız ConversationCallbackDelegate tarafından yönetilir.

Uygulamanız ileti dizisi kısayolları sağlıyorsa ConversationItem oluşturulurken sağlanan kimliğin, ilgili ileti dizisinin kısayolunun kimliğiyle aynı olduğundan emin olun.

Görüşmeleri güncelleme

Kullanıcılar mesaj gönderip alırken invalidate() işlevini çağırarak uygulamanızın ekranlarını yeni mesajları içerecek şekilde yenilemeniz gerekir. Şablon içeriğini yenileme başlıklı makaleyi inceleyin.

En iyi kullanıcı deneyimi için yenileme sürelerini 500 milisaniye veya daha kısa tutmanız önerilir. Sık sık yenileme işlemi uzun sürerse gelen mesajları yüklerken bir yükleme durumu gösterebilirsiniz.

Bildirimlerin önemini uygun şekilde ayarlama

Uygulamanız, kullanıcılar uygulamanızı kullanırken ve ilgili bir ileti dizisini görüntülerken gelen bildirimlerin önemini düşürerek dikkat dağıtıcı bildirim (HUN) olarak görünmelerini engellemelidir.

Bir görüşmenin görünür olup olmadığını, görüntüleyen 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ı dağıtma

Şablonlu mesajlaşma deneyimlerini destekleyen uygulamalar Google Play'de yalnızca dahili test ve kapalı test kanallarında yayınlanabildiğinden, bu kanallardaki derlemeleri içeren gönderimler reddedildiğinden açık test veya üretim kanallarına yönelik destek içeren derlemeleri tanıtmamanız gerekir.