Neben der grundlegenden Benachrichtigungsfunktion zum Lesen und Beantworten von Nachrichten unterstützt Android Auto auch erweiterte Messaging-Funktionen, die mit der Android for Cars-App-Bibliothek erstellt wurden.
Unterstützung von Benachrichtigungsfunktionen für die Nachrichtenübermittlung
Alle Apps, die die Verwendung von Vorlagen für Nachrichten unterstützen, müssen auch Messaging-Benachrichtigungen für Android Auto erweitern. So können Nutzer Nachrichten lesen und beantworten, ohne die App mit der Vorlage öffnen zu müssen.
Vorlagen für Nachrichten erstellen
Folgen Sie der Anleitung unter Android for Cars-App-Bibliothek verwenden und Unterstützung von Android Auto zu Ihrer App mit Vorlage hinzufügen, um mit dem Erstellen der App mit Vorlage zu beginnen. Lesen Sie dann die Informationen auf dieser Seite, um mehr über die spezifischen Anforderungen an Apps mit Vorlagen für Nachrichten zu erfahren.
Manifestdateien Ihrer App konfigurieren
Damit Android Auto die Funktionen Ihrer App kennt, muss Ihre App Folgendes tun:
Unterstützung von Kategorien in Ihrem Manifest deklarieren
Ihre App muss die androidx.car.app.category.MESSAGING
-Kategorie für Infotainment-Apps im Intent-Filter ihrer CarAppService
angeben.
<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 von der Car API 7 oder höher unterstützt wird, sollten Sie auch die minCarApiLevel
-Metadaten auf diesen Wert festlegen. Weitere Informationen finden Sie unter API-Ebene der Auto-App.
<application ...>
...
<meta-data
android:name="androidx.car.app.minCarApiLevel"
android:value="7"/>
...
</application>
Unterstützung für Android Auto angeben
Achten Sie darauf, dass in der automotive_app_desc.xml
-Datei, mit der Sie die Unterstützung von Android Auto deklarieren, 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 für eingehende SMS/MMS-Nachrichten verwendet, 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 optimale Nutzererfahrung empfehlen wir, maximal die 5–10 letzten oder wichtigsten Unterhaltungen anzugeben, wobei jede Unterhaltung maximal 5 der letzten Nachrichten enthalten sollte. 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, als gelesen Markieren und Antworten auf Nachrichten angezeigt. Diese Aktionen werden vom ConversationCallbackDelegate
verwaltet, den Sie beim Erstellen des ConversationItem
angeben.
Wenn Ihre App Unterhaltungsverknüpfungen bietet, muss die beim Erstellen der ConversationItem
angegebene ID mit der ID für die Verknüpfung dieser Unterhaltung übereinstimmen.
Unterhaltungen aktualisieren
Wenn Nutzer Nachrichten senden und empfangen, sollten Sie die Bildschirme Ihrer App aktualisieren, damit die neuen Nachrichten angezeigt werden. Rufen Sie dazu invalidate()
auf. Inhalt einer Vorlage aktualisieren
Für eine optimale Nutzerfreundlichkeit empfehlen wir, die Aktualisierungszeit auf 500 Millisekunden oder weniger zu begrenzen. Wenn das Aktualisieren häufig länger dauert, können Sie einen Ladevorgang anzeigen lassen, während die eingehenden Nachrichten geladen werden.
Wichtigkeit von Benachrichtigungen richtig festlegen
Um Ablenkungen zu vermeiden, sollte Ihre App die Wichtigkeit eingehender Benachrichtigungen verringern, wenn ein Nutzer eine entsprechende Unterhaltung in Ihrer App aufruft, damit die Benachrichtigungen nicht als „Heads-up-Benachrichtigungen“ (HUNs) angezeigt werden.
Sie können den Lebenszyklus der Screen
beobachten, in der die Unterhaltung angezeigt wird, um zu sehen, ob sie sichtbar ist. Weitere Informationen finden Sie unter Der 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 die Nutzung von Vorlagen für Nachrichten unterstützen, nur in den Tracks „Interner Test“ und „Geschlossener Test“ bei Google Play veröffentlicht werden können, sollten Sie keine Builds bewerben, die die Unterstützung von offenen Tests oder Produktions-Tracks umfassen. Einreichungen mit Builds in diesen Tracks werden abgelehnt.