Neben der grundlegenden Messaging-Funktion mit Benachrichtigungen zum Lesen und Beantworten von Nachrichten unterstützt Android Auto auch umfangreichere Messaging-Funktionen, die mit der Android for Cars App Library erstellt wurden.
Messaging-Funktionen mit Benachrichtigungen unterstützen
Alle Apps, die vorlagenbasierte Messaging-Funktionen unterstützen, müssen auch Messaging-Benachrichtigungen für Android Auto erweitern. Durch diese Integration können Nutzer Nachrichten lesen und beantworten, ohne die vorlagenbasierte App öffnen zu müssen.
Vorlagenbasierte Messaging-Funktion erstellen
Folgen der Anleitung unter Android for Cars-App-Bibliothek verwenden und Unterstützung von Android Auto zu Ihrer Vorlagen-App hinzufügen, um mit der Entwicklung der Vorlagen-App zu beginnen. Beachten Sie dann die Anleitung auf dieser Seite, um die spezifischen Anforderungen an vorlagenbasierte Messaging-Apps zu verstehen.
Manifestdateien der App konfigurieren
Damit Android Auto über die Funktionen Ihrer App informiert wird, muss Ihre App Folgendes tun:
Kategorieunterstützung im Manifest deklarieren
Ihre App muss die androidx.car.app.category.MESSAGING Kategorie
für Car-Apps im Intent-Filter von
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 Car-Apps festlegen
Da die ConversationItem API nur unter
Car API 7 oder höher unterstützt wird, sollten Sie die Metadaten minCarApiLevel 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>
Unterstützung von Android Auto deklarieren
Prüfen Sie in der Datei automotive_app_desc.xml, mit der Sie die Unterstützung von Android Auto
deklarieren, ob sowohl die Funktionen notification als auch
template deklariert sind:
<automotiveApp>
<uses name="notification" />
<uses name="template" />
</automotiveApp>
Wenn Ihre App als der Standard-SMS-Handler festgelegt werden kann,
fügen Sie das folgende <uses> Element ein. 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 der Unterhaltungen eines Nutzers anzeigen möchten, können Sie eine Liste von
ConversationItem-Objekten in einer
ListTemplate oder
SectionedItemTemplate anzeigen.
Für eine gute Nutzererfahrung empfehlen wir, maximal die 5 bis 10 letzten oder wichtigsten Unterhaltungen mit jeweils maximal 5 Nachrichten anzuzeigen. So wird die Ladeleistung verbessert, Nutzer sehen die relevantesten Inhalte und die Interaktionszeit wird verkürzt.
class MyMessagingScreen(carContext: CarContext) : Screen(carContext) { override fun onGetTemplate(): Template { val itemListBuilder = ItemList.Builder() val conversations: List<MyConversation> = getConversations() // 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( conversation.id, CarText.create(conversation.title), Person.Builder() .setName("Me") .setKey("self_id") .build(), carMessages, myConversationCallback ) .build() ) } val header = Header.Builder() .setStartHeaderAction(Action.APP_ICON) .setTitle("Conversations") .build() return ListTemplate.Builder() .setHeader(header) .setSingleList(itemListBuilder.build()) .build() } }
In jedem ConversationItem werden automatisch Aktionen zum Abspielen einer Nachricht, zum Markieren als gelesen und zum Antworten angezeigt. Diese Aktionen werden vom
ConversationCallbackDelegate verarbeitet, den Sie beim
Erstellen von ConversationItem angeben.
Wenn Ihre App Unterhaltungsverknüpfungen bietet, prüfen Sie
, ob die beim Erstellen von ConversationItem angegebene ID mit der
ID der Verknüpfung für diese Unterhaltung übereinstimmt.
Unterhaltungen aktualisieren
Wenn Nutzer Nachrichten senden und empfangen, sollten Sie die Bildschirme Ihrer App aktualisieren, um
die neuen Nachrichten einzufügen. Rufen Sie dazu invalidate() auf. Weitere Informationen finden Sie unter Inhalte einer Vorlage aktualisieren.
Für eine optimale Nutzererfahrung empfehlen wir, die Aktualisierungszeiten auf 500 Millisekunden oder weniger zu beschränken. Wenn die Aktualisierung häufig 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. So werden die Benachrichtigungen nicht als Heads-up-Benachrichtigungen (HUNs) angezeigt.
Sie können nachverfolgen, ob eine Unterhaltung sichtbar ist, indem Sie den Lebenszyklus des Screen beobachten, auf dem sie angezeigt wird. Weitere Informationen finden Sie unter Lebenszyklus eines Bildschirms.
Damit eine Benachrichtigung nicht als HUN angezeigt wird, legen Sie die Priorität auf
IMPORTANCE_DEFAULT oder niedriger fest.
Vorlagenbasierte Messaging-Apps bereitstellen
Da Apps, die vorlagenbasierte Messaging-Funktionen unterstützen, nur in Tracks für interne und geschlossene Tests bei Google Play veröffentlicht werden können, sollten Sie keine Builds bewerben, die Tracks for offene Tests oder Produktions-Tracks unterstützen, da Einreichungen mit Builds in diesen Tracks abgelehnt werden.