Vorlagen für Messaging-Apps für Android Auto erstellen

Vorlagenbasierte Nachrichten befinden sich in der Betaphase
Derzeit kann jeder Kommunikations-Apps mit Vorlagen für Messaging-Funktionen in Tracks für interne und geschlossene Tests im Play Store veröffentlichen. Die Veröffentlichung in Tracks für offene Tests und Produktions-Tracks ist zu einem späteren Zeitpunkt zulässig.

Neben der grundlegenden Messaging-Funktion, die auf Benachrichtigungen basiert und mit der Nutzer Nachrichten lesen und beantworten können, unterstützt Android Auto auch umfangreichere Messaging-Funktionen, die mit der Android for Cars App Library erstellt wurden.

Unterstützung von Messaging-Funktionen, die auf Benachrichtigungen basieren

Alle Apps, die Vorlagen für Messaging-Funktionen unterstützen, müssen auch Messaging-Benachrichtigungen für Android Auto erweitern. Mit dieser Integration können Nutzer Nachrichten lesen und darauf antworten, ohne die Vorlagen-App öffnen zu müssen.

Nachrichtenvorlagen erstellen

Folge der Anleitung unter Android for Cars-App-Bibliothek verwenden und Unterstützung von Android Auto zu deiner Vorlagen-App hinzufügen, um mit der Entwicklung der Vorlagen-App zu beginnen. Auf dieser Seite finden Sie dann Informationen zu den spezifischen Anforderungen für Messaging-Apps mit Vorlagen.

Manifestdateien der App konfigurieren

Damit Android Auto die Funktionen Ihrer App kennt, muss Ihre App Folgendes tun:

Kategorieunterstützung im Manifest deklarieren

Ihre App muss die androidx.car.app.category.MESSAGING-Kategorie für Auto-Apps im Intent-Filter ihrer CarAppService deklarieren.

<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>

Mindest-API-Level für Auto-Apps festlegen

Da die ConversationItem API nur in Car API 7 oder höher unterstützt wird, sollten Sie die minCarApiLevel-Metadaten auf diesen Wert festlegen. Weitere Informationen finden Sie unter Car App API Level.

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

Android Auto-Unterstützung deklarieren

Prüfen Sie in der automotive_app_desc.xml-Datei, die Sie zum Deklarieren der Android Auto-Unterstützung verwenden, ob sowohl die notification- als auch die template-Funktionen deklariert sind:

<automotiveApp>
    <uses name="notification" />
    <uses name="template" />
</automotiveApp>

Wenn Ihre App als Standard-SMS-Handler festgelegt werden kann, müssen Sie das folgende <uses>-Element einfügen. Andernfalls wird ein in Android Auto integrierter Standard-Handler verwendet, um eingehende SMS-/MMS-Nachrichten zu verarbeiten, was zu doppelten Benachrichtigungen führen kann.

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

Unterhaltungen anzeigen

Wenn Sie eine Übersicht über die Unterhaltungen eines Nutzers anzeigen möchten, können Sie eine Liste von ConversationItem-Objekten in einem ListTemplate oder SectionedItemTemplate anzeigen.

Für eine gute Nutzererfahrung empfehlen wir, maximal die 5–10 letzten oder wichtigsten Unterhaltungen mit jeweils maximal den 5 letzten Nachrichten bereitzustellen. So wird die Ladeleistung verbessert, Nutzer sehen die relevantesten Inhalte und die Interaktionszeit wird verkürzt.

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()
    }
}

Bei jeder ConversationItem werden automatisch Aktionen zum Abspielen einer Nachricht, zum Markieren als gelesen und zum Antworten angezeigt. Diese Aktionen werden von der ConversationCallbackDelegate ausgeführt, die Sie beim Erstellen des ConversationItem angeben.

Wenn Ihre App Unterhaltungsverknüpfungen bereitstellt, prüfen Sie, ob die ID, die beim Erstellen des ConversationItem angegeben wurde, mit der ID für die Verknüpfung der Unterhaltung übereinstimmt.

Unterhaltungen aktualisieren

Wenn Nutzer Nachrichten senden und empfangen, sollten Sie die Bildschirme Ihrer App aktualisieren, um die neuen Nachrichten einzublenden. Rufen Sie dazu invalidate() auf. Inhalt einer Vorlage aktualisieren

Für eine optimale Nutzererfahrung empfehlen wir, die Aktualisierungszeiten auf 500 Millisekunden oder weniger zu beschränken. Wenn das häufige Aktualisieren länger dauert, können Sie einen Ladestatus anzeigen, während Sie die eingehenden Nachrichten laden.

Wichtigkeit von Benachrichtigungen richtig festlegen

Um Ablenkungen zu vermeiden, sollte Ihre App die Wichtigkeit eingehender Benachrichtigungen verringern, wenn ein Nutzer eine entsprechende Unterhaltung ansieht, damit die Benachrichtigungen nicht als Pop-up-Benachrichtigungen angezeigt werden.

Sie können nachvollziehen, ob eine Unterhaltung sichtbar ist, indem Sie den Lebenszyklus des Screen beobachten, in dem sie angezeigt wird. Weitere Informationen finden Sie unter Lebenszyklus eines Bildschirms.

Wenn Sie verhindern möchten, dass eine Benachrichtigung als HUN angezeigt wird, legen Sie die Priorität auf IMPORTANCE_DEFAULT oder niedriger fest.

Messaging-Apps mit Vorlagen bereitstellen

Da Apps, die Vorlagen für Messaging unterstützen, nur in internen Test- und Geschlossener-Test-Tracks bei Google Play veröffentlicht werden können, sollten Sie keine Builds bewerben, die diese Funktion in Offener-Test- oder Produktions-Tracks unterstützen. Einsendungen mit Builds in diesen Tracks werden abgelehnt.