![](https://developer.android.google.cn/static/guide/app-actions/images/Fitness4-widget.png?authuser=6&hl=de)
GET_EXERCISE_OBSERVATION
wird gestartet.
Für viele Intents ist die beste Antwort, dem Nutzer eine einfache Antwort, eine kurze Bestätigung oder eine schnelle interaktive Erfahrung zu bieten. Sie können in Google Assistant ein Android-App-Widget anzeigen lassen, um diese Art von Intents auszuführen.
In dieser Anleitung wird beschrieben, wie Sie Assistant-Nutzeranfragen mithilfe von Widgets ausführen und die Widget-Nutzung für Assistant mit der Widgets-Erweiterungsbibliothek über die App Actions optimieren.
Vorteile
Widgets sind Miniaturansichten von Anwendungen, die in Android-Oberflächen wie die Übersicht oder den Sperrbildschirm eingebettet werden können. Mit App Actions kannst du die Wirkung deiner Widgets steigern, indem du sie für die Anzeige in Assistant infrage stellst:
- Erkennung:Hiermit werden Widgets proaktiv angezeigt, wenn Nutzer in natürlicher Sprache suchen.
- Interaktion:Widgets können per Sprachbefehl angezeigt werden, beispielsweise wenn Assistant persönliche Ergebnisse auf dem Sperrbildschirm oder in Android Auto bereitstellt.
- Bindung:Gestatte Nutzern, die in Assistant angezeigten Widgets an ihren Launcher anzupinnen. Zum Anpinnen ist die Bibliothek der Widgets-Erweiterung erforderlich.
So zeigt Assistant Widgets an
Es gibt zwei Möglichkeiten, wie Nutzer Widgets in Assistant aufrufen können:
- Explizite Anforderung eines Widgets anhand des Namens.
- Eine Anfrage an Assistant senden, die einen integrierten Intent (BII) oder einen benutzerdefinierten Intent auslöst, der für die Widget-Auftragsausführung konfiguriert ist
Expliziter Aufruf
Um Widgets für eine installierte App explizit aufzurufen, können Nutzer Assistant etwa so etwas fragen:
- „Hey Google, zeig mir das BeispielApp-Widget.“
- „Widgets aus der Beispiel-App.“
Assistant zeigt diese Widgets mit der allgemeinen Einleitung an: BeispielApp sagt, hier ist ein Widget. Assistant gibt zwar Widgets nativ zurück, die auf diese Weise angefordert werden, ohne dass der App-Entwickler etwas tun muss. Bei dieser Aufrufmethode muss der Nutzer das Widget explizit kennen, um es anfordern zu können. Verwenden Sie die im folgenden Abschnitt beschriebene Intent-Auftragsausführungsmethode, um die Widget-Erkennung zu vereinfachen.
Intent-Ausführung
Damit sie leichter zu finden sind, müssen sie den Anfragen in natürlicher Sprache entsprechen, die Nutzer bei Assistant ausführen. Beispielsweise können Sie jedes Mal ein Widget zurückgeben, wenn ein Nutzer in Ihrer Fitness-App die BII GET_EXERCISE_OBSERVATION
auslöst, indem er fragt: „Hey Google, wie viele Kilometer habe ich diese Woche mit der Beispiel-App gelaufen?“. Neben der Vereinfachung der Erkennung bietet die Einbindung von Widgets in App Actions folgende Vorteile:
- Parameterzugriff:Assistant stellt die aus der Nutzerabfrage extrahierten Intent-Parameter an Ihr Widget bereit, sodass individuelle Antworten möglich sind.
- Benutzerdefinierte Sprachausgabe-Einführungen:Sie können einen Text-in-Sprache-String (TTS) angeben, den Assistant ansagen kann, wenn Ihr Widget angezeigt wird.
- Widget anpinnen:Assistant zeigt neben dem Widget die Schaltfläche Dieses Widget hinzufügen an. Damit können Nutzer Ihre Widgets ganz einfach an ihren Launcher anpinnen.
Widget-Auftragsausführung implementieren
So implementieren Sie die Widget-Auftragsausführung für Ihre Intents:
- Implementieren Sie ein Android-Widget. Folgen Sie dazu der Anleitung unter Einfaches Widget erstellen.
- Fügen Sie Ihrer Funktion in der
shortcuts.xml
-Ressourcendatei Ihrer Anwendung ein<app-widget>
-Element hinzu, das Details zur Auftragsausführung und BII-<parameter>
-Tags enthält. Aktualisieren Sie das Widget, damit die Parameter verarbeitet werden können. - Fügen Sie die erforderliche Widgets-Erweiterungsbibliothek hinzu, mit der Assistant BII-Namen und -Parameter an Ihre Widgets übergeben kann. Außerdem können Sie damit benutzerdefinierte Sprachausgabe-Funktionen und das Anpinnen von Widgets verwenden.
Im folgenden Abschnitt wird das <app-widget>
-Schema für shortcuts.xml
beschrieben.
Widget-Schema
<app-widget>
-Elemente sind als Auftragsausführungen innerhalb von <capability>
-Elementen in shortcuts.xml
definiert. Sie erfordern die folgenden Attribute, sofern nicht als optional angegeben:
Tag „shortcuts.xml“ | Enthalten in | Merkmale |
---|---|---|
<app-widget> |
<capability> |
|
<parameter> |
<app-widget> |
|
<extra> |
<app-widget> |
|
Beschreibung des Widget-Schemas
<app-widget>
Widget-Auftragsausführungselement der obersten Ebene.
Attribute:
android:identifier
: die Kennung für diese Auftragsausführung. Dieser Wert muss für die<app-widget>
- und<intent>
-Auftragsausführungselemente, die in einem<capability>
definiert sind, eindeutig sein.android:targetClass
: Der vollständige Klassenname vonAppWidgetProvider
zur Verarbeitung des Intents.
<Parameter>
Ordnet einem <parameter>
-Intent-Wert einen BII-Parameter zu. Sie können für jedes <app-widget>
-Element null oder mehr Parameter definieren. Bei der Auftragsausführung gibt Assistant Parameter weiter, indem er die Extras für die Widget-Instanz als Schlüssel/Wert-Paare im folgenden Format aktualisiert:
- Schlüssel: der für den Parameter definierte
android:key
. - Wert: Der Wert, den BII aus der Spracheingabe eines Nutzers extrahiert.
Um auf diese Extras zuzugreifen, rufen Sie getAppWidgetOptions()
für das zugehörige AppWidgetManager
-Objekt auf. Dadurch wird ein Bundle
zurückgegeben, das den Namen des auslösenden BII und seine Parameter enthält. Weitere Informationen finden Sie unter Parameterwerte extrahieren.
Weitere Informationen zum BII-Parameterabgleich finden Sie unter Parameterdaten und Abgleich.
<extra>
Optionales Tag, das angibt, dass eine benutzerdefinierte Sprachausgabe für dieses Widget verwendet wird. Für dieses Tag sind folgende Attributwerte erforderlich:
android:name
:"hasTts"
android:value
:"true"
Beispielcode
Das folgende Beispiel aus einer shortcuts.xml
-Datei zeigt eine Konfiguration der Widget-Auftragsausführung für eine BII-Funktion GET_EXERCISE_OBSERVATION
:
<capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
<app-widget
android:identifier="GET_EXERCISE_OBSERVATION_1"
android:targetClass="com.exampleapp.providers.exampleAppWidgetProvider"
android:targetPackage="com.exampleapp">
<parameter
android:name="exerciseObservation.aboutExercise.name"
android:key="exercisename">
</parameter>
<extra android:name="hasTts" android:value="true"/>
</app-widget>
</capability>
Sie können pro Funktion mehrere <app-widget>
-Elemente angeben oder eine Kombination aus <app-widget>
- und <intent>
-Elementen verwenden. So können Sie Nutzern eine personalisierte Erfahrung bieten, die auf verschiedenen Kombinationen von Parametern basiert. Wenn der Nutzer beispielsweise in seiner Abfrage keinen Rückgabeort angibt, können Sie ihn zu der Aktivität in Ihrer App weiterleiten, die Optionen zum Festlegen der Abhol- und Abgabeorte enthält. Weitere Informationen zum Definieren von Fallback-Intents finden Sie im Abschnitt Fallback-Intents.
Parameterwerte extrahieren
In der folgenden Beispielklasse AppWidgetProvider
werden mit der privaten Funktion updateAppWidget()
der BII-Name und die Parameter aus den Widgetoptionen Bundle
extrahiert:
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ class MyAppWidget : AppWidgetProvider() { override fun onUpdate( context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray ) { // There might be multiple widgets active, so update all of them for (appWidgetId in appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId) } } private fun updateAppWidget( context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val widgetText: CharSequence = context.getString(R.string.appwidget_text) // Construct the RemoteViews object val views = RemoteViews(context.packageName, R.layout.my_app_widget) views.setTextViewText(R.id.appwidget_text, widgetText) // Extract the name and parameters of the BII from the widget options val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId) val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) // "actions.intent.CREATE_TAXI_RESERVATION" val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS) if (params != null && params.containsKey("dropoff")) { val dropoffLocation = params.getString("dropoff") // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // There might be multiple widgets active, so update all of them for (int appWidgetId : appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId); } } private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { CharSequence widgetText = context.getString(R.string.appwidget_text); // Construct the RemoteViews object RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget); views.setTextViewText(R.id.appwidget_text, widgetText); // Extract the name and parameters of the BII from the widget options Bundle optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId); String bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII); // "actions.intent.CREATE_TAXI_RESERVATION" Bundle params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS); if (params != null && params.containsKey(("dropoff"))){ String dropoffLocation = params.getString("dropoff"); // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views); } }
Widget-Erweiterungsbibliothek
Mit der Erweiterungsbibliothek der App Actions-Widgets lassen sich Widgets für die Sprachsteuerung von Assistant optimieren. Mit dieser Bibliothek können Ihre Widgets wichtige Auftragsausführungsinformationen aus dem auslösenden BII empfangen, einschließlich des BII-Namens und aller Intent-Parameter, die aus der Nutzerabfrage extrahiert werden.
Mit dieser Maven-Bibliothek können Sie für jedes Widget eine benutzerdefinierte Sprachausgabe-Einführung bereitstellen, damit Assistant eine Zusammenfassung der Inhalte ansagen kann, die den Nutzern visuell gerendert werden. Außerdem wird das Anpinnen von Launchern ermöglicht, sodass Nutzer die in Assistant angezeigten Widgets ganz einfach auf ihren Launcher-Bildschirmen speichern können.
Fügen Sie die Bibliothek zuerst dem Abschnitt „Abhängigkeiten“ der Datei build.gradle
für Ihr Anwendungsmodul hinzu:
dependencies {
//...
implementation "com.google.assistant.appactions:widgets:0.0.1"
}
Individuelle Vorstellungen
Nachdem Sie die Widgets-Erweiterungsbibliothek importiert haben, können Sie benutzerdefinierte TTS-Einführungen für Ihre Widgets bereitstellen. Um deine Definition in die AppWidgetProvider
des Widgets aufzunehmen, öffne die Klasse in deiner IDE und importiere die Widgets Extension-Bibliothek:
Kotlin
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
Java
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ object MyAppWidget : AppWidgetProvider() { fun updateAppWidget( context: Context?, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build() // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId) // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { AppActionsWidgetExtension appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build(); // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId); // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views); } }
Stilempfehlungen für Text-in-Sprache
Verwenden Sie die folgenden Stilempfehlungen, um Ihre benutzerdefinierten Widget-Einführungen für Sprachausgabe und angezeigte Aufforderungen zu optimieren.
Empfehlung | empfohlen | Nicht empfohlen |
---|---|---|
KürzungenVerwende Kontraktionen in TTS-Prompts. Nachrichten ohne Kontraktionen klingen eher gestelzt und roboterhaft als natürlich und dialogorientiert. Wörter wie „kann nicht“ oder „nicht“ klingen, die bestraft und hart klingen. |
ResponseSpeech (TTS)Ich kann leider keine Reservierung finden. ResponseText Ich kann leider keine Reservierung finden. |
ResponseSpeech (TTS)Ich kann leider keine Reservierung finden. ResponseText Ich kann leider keine Reservierung finden. |
KommasSorgen Sie für mehr Klarheit, indem Sie in Listen mit drei oder mehr Elementen mehrere Kommas verwenden. Ohne das serielle Komma können einzelne Elemente in der Liste fälschlicherweise angehört oder als Gruppen gelesen werden. In „Nazien, Gänseblümchen und Sonnenblumen“ klingen „Gänseblümchen und Sonnenblumen“ beispielsweise so, als würden sie zusammenkommen. Bei „Nazis“, „Gänseblümchen“ und „Sonnenblumen“ sind alle drei deutlich voneinander getrennt. |
ResponseSpeech (TTS)Zu den beliebtesten zählen gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen. ResponseText Zu unseren beliebtesten zählen gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen. |
ResponseSpeech (TTS)Zu den beliebtesten zählen gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen. ResponseText Zu unseren beliebtesten zählen gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen. |
ZiffernVerwenden Sie Ziffern statt Text, um visuelle Inhalte besser erkennbar zu machen. |
ResponseSpeech (TTS)Dein Blutdruck liegt bei 100 über 80. ResponseText Dein Blutdruck liegt bei 100/80. |
ResponseSpeech (TTS)Dein Blutdruck liegt bei 100/80. ResponseText Dein Blutdruck liegt bei einhundert über achtzig. |
SymboleVerwenden Sie anstelle von Text spezielle Symbole, um visuelle Inhalte leichter erkennbar zu machen. |
ResponseSpeech (TTS)Ihr letzter Kauf kostete 24,65 €. ResponseText Ihr letzter Kauf kostete 24,65 €. |
ResponseSpeech (TTS)Ihr letzter Kauf betrug vierundzwanzig Euro und fünfundsechzig Cent. ResponseText Ihr letzter Kauf betrug vierundzwanzig Euro und fünfundsechzig Cent. |
Extras vermeidenDurch Niedlichkeiten wirken die Antworten distanziert und formell. Vergessen Sie sie und führen Sie die Unterhaltung freundlich und informell. |
ResponseSpeech (TTS)Ihre Bestellung wurde zugestellt. ResponseText Ihre Bestellung wurde geliefert. |
ResponseSpeech (TTS)Ja, das kann ich Ihnen sagen. Deine Bestellung wurde zugestellt. ResponseText Ok, das kann ich dir sagen. Deine Bestellung wurde zugestellt. |
Vermeiden Sie AusrufezeichenSie können als Schreien empfunden werden. |
ResponseSpeech (TTS)Du bist heute 1,5 Meilen gelaufen. ResponseText Du bist heute 1,5 Meilen gelaufen. |
ResponseSpeech (TTS)Du bist heute 1,5 Meilen gelaufen. ResponseText Du bist heute 1,5 Meilen gelaufen. |
UhrzeitVerwenden Sie Ziffern wie „5:15“ statt „fünfzehn“ oder „Viertel nach fünf“. Für das 12-Stunden-Format verwenden Sie AM oder PM. |
ResponseSpeech (TTS)Ihre Lieferung sollte bis 08:15 Uhr ankommen. ResponseText Die Lieferung sollte bis 08:15 Uhr ankommen. |
ResponseSpeech (TTS)Ihre Lieferung sollte heute 15 Minuten nach 8 Uhr morgens bei Ihnen eintreffen. ResponseText Ihre Lieferung sollte heute 15 Minuten nach 8 Uhr morgens bei Ihnen eintreffen. |
Nicht in Monologen startenSeien Sie informativ, aber halten Sie die Antworten kurz. Gehen Sie nicht auf zu komplizierte Details ohne einen klaren Vorteil für die Nutzer ein. |
ResponseSpeech (TTS)Im letzten Monat hast du 159 Stunden Energie verbraucht. ResponseText Im letzten Monat hast du 159 Stunden Energie verbraucht. |
ResponseSpeech (TTS)Energiesparen ist für unseren Planeten und die Umwelt sehr wichtig. Im letzten Monat hast du 159 Stunden Energie verbraucht. In diesem Monat hast du 58 Stunden Energie verbraucht. ResponseText Energiesparen ist für unseren Planeten und die Umwelt sehr wichtig. Im letzten Monat hast du 159 Stunden Energie verbraucht. In diesem Monat hast du 58 Stunden Energie verbraucht. |
Kurze, einfache Wörter verwendenEinfache und einfache Formulierungen sind am stärksten und daher für Menschen mit unterschiedlichen Hintergründen zugänglich. |
ResponseSpeech (TTS)Deine letzte Blutzuckermessung lag bei 126. ResponseText Deine letzte Blutzuckermessung lag bei 126 mg/dl. |
ResponseSpeech (TTS)Der vorletzte Blutzuckerspiegel lag bei 126. ResponseText Der vorletzte Blutzuckerspiegel lag bei 126. |
Bildschirm anpinnen
Mit der Widgets-Erweiterungsbibliothek kann die Schaltfläche Dieses Widget hinzufügen zusammen mit deinem Widget in Assistant angezeigt werden. Fügen Sie AndroidManifest.xml
die folgende Empfängerdefinition hinzu, um das Anpinnen zu aktivieren:
<application>
<receiver android:name="com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.google.assistant.appactions.widgets.COMPLETE_PIN_APP_WIDGET" />
</intent-filter>
</receiver>
<service
android:name=
"com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action
android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
</intent-filter>
</service>
</application>
Inventarverfügbarkeit
BI-Lösungen, die Inline-Inventar oder Webinventar unterstützen, können diese Inventare auf Ihre Widget-Auftragsausführungen ausweiten.
Inline-Inventar
Der folgende Code aus einer shortcuts.xml
-Beispieldatei veranschaulicht eine START_EXERCISE
-BII-Funktion, die für Inline-Inventar- und Widget-Auftragsausführung konfiguriert ist:
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.StartExerciseAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
app:shortcutMatchRequired="true">
</parameter>
</app-widget>
</capability>
<shortcut android:shortcutId="RunningShortcut">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.example.exampleapp.StartExcerciseActivity" />
<capability-binding
android:capability="actions.intent.START_EXERCISE"
android:parameter="exercise.name"
android:value="running;runs" />
</shortcut>
Wenn ein Nutzer im vorherigen Beispiel diese Funktion auslöst, indem er Assistant "Start running with ExampleApp" fragt, enthält das Option Bundle für die <app-widget>
-Auftragsausführung das folgende Schlüssel/Wert-Paar:
- Schlüssel =
“exerciseName”
- Wert =
“RunningShortcut”
Webinventar
Der folgende Code aus einer Beispieldatei shortcuts.xml
zeigt eine Funktion, die für Webinventar und Widget-Auftragsausführung aktiviert wird:
<shortcuts>
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.CreateTaxiAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
android:mimeType="text/*">
<data android:pathPattern="https://exampleapp.com/exercise/.*" />
</parameter>
</app-widget>
</capability>
</shortcuts>
Test-App-Aktionen
Mit dem App Actions-Testtool, einer Funktion des Google Assistant-Plug-ins für Android Studio, können Sie Widgets auf einem physischen oder virtuellen Gerät testen. So verwenden Sie das Testtool:
- Verbinden Sie das Testgerät mit der ausgeführten App.
- Rufen Sie in Android Studio Tools > App Actions > App Actions Test Tool auf.
- Klicken Sie auf Vorschau erstellen.
- Führen Sie Ihre App mit Android Studio auf Ihrem Testgerät aus.
- Verwenden Sie die Assistant App auf Ihrem Testgerät, um die App-Aktion zu testen. Sie können zum Beispiel sagen: „Hey Google, wie viele Kilometer habe ich diese Woche mit der BeispielApp gelaufen?“
- Beobachte das Verhalten deiner App oder verwende den Android Studio-Debugger, um das gewünschte Aktionsergebnis zu prüfen.
Qualitätsrichtlinien
In diesem Abschnitt werden die wichtigsten Anforderungen und Best Practices für die Einbindung von App-Aktionen in Widgets erläutert.
Inhalt in Widgets
- (Erforderlich) Schalten Sie in Ihren Widgets keine Anzeigen.
- Widget-Inhalte vollständig auf die Erfüllung des Intents konzentrieren. Versuchen Sie nicht, mehrere Intents mit einem Widget zu erfüllen oder irrelevante Inhalte hinzuzufügen.
Authentifizierung
- (Erforderlich) Wenn eine Nutzerauthentifizierung erforderlich ist, um einen Nutzerfluss abzuschließen, geben Sie ein Widget zurück, das erklärt, dass der Nutzer mit der App fortfahren muss. Die Inline-Nutzerauthentifizierung in Google Assistant wird für App-Aktionen nicht unterstützt.
- Wenn Nutzer zulassen, dass Ihre App Daten über Widgets anzeigt, können Sie zur Laufzeit ein Fehler-Widget für nicht autorisierte Nutzer zurückgeben.
Fallback-Intents
(Erforderlich) Geben Sie in Ihrem
shortcuts.xml
neben der Widget-Auftragsausführung für eine bestimmte Funktion immer eine Fallback-<intent>
an. Ein Fallback-Intent ist ein<intent>
-Element ohne erforderliche<parameter>
-Werte.Dadurch kann Assistant eine Aktion ausführen, wenn die Nutzerabfrage keine Parameter enthält, die von den anderen in der Funktion definierten Ausführungselementen benötigt werden. Die Ausnahme bildet, wenn für diese Funktion keine Parameter erforderlich sind. In diesem Fall wird nur die Widget-Auftragsausführung benötigt.
Verwenden Sie den Fallback-Intent, um Ihre App auf dem relevanten Bildschirm zu öffnen, nicht auf dem Startbildschirm.
Der folgende Code aus einer shortcuts.xml
-Beispieldatei veranschaulicht eine <capability>
mit einem Fallback-<intent>
, der eine primäre <app-widget>
-Auftragsausführung unterstützt:
<shortcuts>
<capability
android:name="actions.intent.CREATE_TAXI_RESERVATION">
<!-- Widget with required parameter, specified using the "android:required" attribute. -->
<app-widget
android:identifier="CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.CreateTaxiAppWidgetProvider">
<parameter
android:name="taxiReservation.dropoffLocation.name"
android:key="dropoff"
android:required="true">
</parameter>
</app-widget>
<!-- Fallback intent with no parameters required to successfully execute. -->
<intent
android:identifier="CREATE_TAXI_RESERVATION_3"
android:action="myapplication.intent.CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.TaxiReservationActivity">
</intent>
</capability>
</shortcuts>
Offenlegung von Google Play-Daten
In diesem Abschnitt werden die Endnutzerdaten aufgeführt, die von der neuesten Version der Widgets-Erweiterungsbibliothek erfasst wurden.
Dieses SDK sendet vom Entwickler bereitgestellte Sprachausgabe-Antworten, die dem Nutzer von Google Assistant mithilfe der Sprachtechnologie von Assistant angesagt werden. Diese Informationen werden nicht von Google gespeichert.
App-Aktionen können Metadaten auch zu folgenden Zwecken erfassen:
- Sie können die Akzeptanzraten verschiedener SDK-Versionen im Blick behalten.
- Die Nutzung von SDK-Funktionen in Apps quantifizieren