App-Aktionen in Android-Widgets einbinden

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Ein Widget wird gestartet für GET_EXERCISE_OBSERVATION

Für viele Intents besteht die beste Reaktion darin, eine einfache Antwort zu geben, oder schnelle interaktive User Experience bieten. Sie können eine Android-App-Widget in Google Assistant für diese Art von Intents.

In diesem Leitfaden erfahren Sie, wie Assistant-Anfragen mithilfe von Widgets ausgeführt werden können und wie Sie Verbessere mit App Actions deine Widget-Nutzung für Assistant Widgets-Erweiterungsbibliothek

Vorteile

Widgets sind kleine App-Ansichten, die auf Android-Geräten eingebettet werden können. wie dem Launcher oder Sperrbildschirm. Mit App Actions können Sie die Auswirkungen Ihrer Widgets, indem Sie sie zur Anzeige in Assistant freigeben:

  1. Erkennung:Widgets werden proaktiv als Reaktion auf die Abfragen in natürlicher Sprache.
  2. Interaktion:Widgets werden angezeigt, wenn Nutzer die App per Sprachbefehl bedienen, z. B. wenn sie die App verwenden Assistant zeigt persönliche Ergebnisse auf dem Sperrbildschirm an und an Android Auto
  3. Bindung:Lassen Sie Nutzer die Widgets anpinnen, die in Assistant zu ihrem Launcher Für die Funktion zum Anpinnen ist das Widgets-Erweiterungsbibliothek

So zeigt Assistant Widgets an

Es gibt zwei Möglichkeiten, wie Nutzer Widgets in Assistant aufrufen können:

Expliziter Aufruf

Um Widgets für installierte Apps explizit aufzurufen, können Nutzer Assistant fragen Dinge wie:

  • „Hey Google, zeig mir das ExampleApp-Widget.“
  • „Widgets aus ExampleApp.“

Assistant zeigt diese Widgets mit der allgemeinen Einführung an: „BeispielApp“ sagt: Hier ist ein Widget.“ Assistant gibt dagegen Widgets zurück, die in ohne dass der App-Entwickler etwas dafür tun muss, wird diese Aufrufmethode setzt voraus, dass der Nutzer das Widget explizit kennt, um es anfordern zu können. Bis die Widget-Erkennung zu vereinfachen, verwenden Sie die in der nächsten Abschnitt.

Intent-Ausführung

Damit Ihre Widgets leichter zu finden sind, Sprachanfragen, die Nutzer in Assistant ausführen. Sie können beispielsweise wenn ein Nutzer den BII GET_EXERCISE_OBSERVATION in Ihrem mit der Frage: „Hey Google, wie viele Kilometer bin ich diese Woche gelaufen?“ BeispielApp?“ Die Integration von Widgets mit App Actions bietet folgende Vorteile:

  • Parameterzugriff:Assistant stellt die extrahierten Intent-Parameter bereit. von der Nutzeranfrage an Ihr Widget, individuelle Antworten.
  • Benutzerdefinierte Einführung in Text-in-Sprache:Sie können einen Text-in-Sprache-String angeben. die Assistant bei der Anzeige deines Widgets ankündigt.
  • Widget-Anpinnen:In der Nähe von Assistant wird die Schaltfläche Widget hinzufügen angezeigt. Ihr Widget, sodass Nutzer Ihre Widgets ganz einfach an ihren Launcher anpinnen können.

Widget-Ausführung implementieren

So implementieren Sie die Widget-Auftragsausführung für Ihre Intents:

  1. Implementieren Sie ein Android-Widget, indem Sie die Schritte ausführen unter Erstellen Sie ein einfaches Widget.
  2. Fügen Sie in der Ressourcendatei shortcuts.xml Ihrer App ein <app-widget>-Element zu Ihrer Fähigkeit, Details zur Ausführung und BII-Tags <parameter> Aktualisieren Sie Ihr um die Parameter zu handhaben.
  3. Fügen Sie die erforderliche Widgets-Erweiterungsbibliothek hinzu, mit der Sie Assistant übergibt BII-Namen und -Parameter an deine Widgets. Außerdem können Sie damit individuelle Einführungen und Widget-Anpinnen Funktionalität.

Im folgenden Abschnitt wird das <app-widget>-Schema für shortcuts.xml beschrieben.

Widget-Schema

<app-widget>-Elemente sind als Ausführungen im <capability>-Elemente in shortcuts.xml. Folgende Voraussetzungen müssen erfüllt sein: , sofern nicht als optional angegeben:

Tag „shortcuts.xml“Enthalten inAttribute
<app-widget> <capability>
  • android:identifier
  • android:targetClass
<parameter> <app-widget>
<extra> <app-widget>
  • android:name (gilt nur für Sprachausgabe)
  • android:value (optional)

Widget-Schemabeschreibung

<app-widget>

Widget-Auftragsausführungselement der obersten Ebene.

Attribute:

  • android:identifier: die Kennung für diese Auftragsausführung. Dieser Wert muss darf in der Auftragsausführung von <app-widget> und <intent> eindeutig sein -Elementen, die in einem <capability> definiert sind.
  • android:targetClass: der vollständige Klassenname von AppWidgetProvider für mit der Absicht umgehen.

<Parameter>

Ordnet einen BII-Parameter einem <parameter>-Wert des Intents zu. Sie können 0 oder 1 weitere Parameter für jedes <app-widget>-Element. Während der Auftragsausführung Parameter übergeben, indem die Extras für die Widget-Instanz als Schlüssel/Wert-Paare aktualisiert werden, im folgenden Format:

  • Schlüssel: der für den Parameter definierte android:key
  • Wert: Der Wert, den der BII aus der Spracheingabe eines Nutzers extrahiert.

Du kannst auf diese Extras zugreifen, indem du getAppWidgetOptions() auf dem zugehörigen AppWidgetManager-Objekt, das ein Bundle-Objekt mit dem Namen den auslösenden BII und seine Parameter. Weitere Informationen finden Sie unter Extrahieren Sie Parameterwerte, um Details zu erhalten.

Weitere Informationen zum BII-Parameterabgleich finden Sie unter Parameterdaten und Abgleich:

<Extra>

Optionales Tag, das angibt, dass eine benutzerdefinierte Text-in-Sprache-Einführung verwendet wird dieses Widgets. Für dieses Tag sind folgende Attributwerte erforderlich:

  • android:name: "hasTts"
  • android:value: "true"

Beispielcode

Im folgenden Beispiel aus einer shortcuts.xml-Datei wird ein Widget veranschaulicht: Konfiguration der Auftragsausführung für ein BII-Funktion von 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 mehrere <app-widget>-Elemente angeben oder eine Kombination aus <app-widget>- und <intent>-Elemente pro Funktion. Mit diesem Ansatz können Sie bieten ein individuelles Erlebnis basierend auf verschiedenen Kombinationen von Parametern die von den Nutzenden bereitgestellt werden. Beispiel: Wenn der Nutzer keinen Rückgabeort angibt können Sie sie auf die Aktivität in Ihrer App verweisen, zum Festlegen der Abhol- und Abgabeorte. Weitere Informationen finden Sie in der Weitere Informationen finden Sie im Abschnitt Fallback-Intents. Definition von Fallback-Intents.

Parameterwerte extrahieren

In der folgenden Beispielklasse AppWidgetProvider hat die private Funktion Mit updateAppWidget() werden der BII-Name und die Parameter aus dem Widget-Optionen Bundle:

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 für Widgets für App Actions werden Ihre Widgets für sprachgesteuerten Assistant-Funktionen nutzen. Mit dieser Bibliothek können Ihre Widgets wichtige Informationen zur Auftragsausführung vom auslösenden BII, einschließlich des BII Name und alle Intent-Parameter, die aus der Nutzerabfrage extrahiert wurden.

Mit dieser Maven-Bibliothek kannst du eine benutzerdefinierte Einführung in die Sprachausgabe anbieten für jedes Widget, sodass Assistant eine Zusammenfassung der Inhalte ansagen kann, die gerade visuell gerendert wird. Außerdem wird das Anpinnen des Launchers aktiviert, Nutzer können die in Assistant angezeigten Widgets ganz einfach in ihrem Launcher speichern. Bildschirmen.

Fügen Sie die Bibliothek zuerst dem Abschnitt „Abhängigkeiten“ der build.gradle-Datei für Ihr App-Modul:

dependencies {
    //...
    implementation "com.google.assistant.appactions:widgets:0.0.1"
}

Individuelle Einführungen

Nach dem Import der Widget-Erweiterungsbibliothek kannst du benutzerdefinierte Text-in-Sprache angeben Einführungen für Ihre Widgets. So fügen Sie Ihre Definition zum AppWidgetProvider, öffnen Sie die Klasse in Ihrer IDE und importieren Sie die Widget-Erweiterung. Bibliothek:

Kotlin

import com.google.assistant.appactions.widgets.AppActionsWidgetExtension

Java

import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Definieren Sie als Nächstes mithilfe der Bibliothek die Einleitungsstrings und aktualisieren Sie die wie in diesem `ExampleAppWidget` gezeigt:

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

Mit den folgenden Stilempfehlungen können Sie Ihr benutzerdefiniertes Widget optimieren Einführung in Sprachausgabe und angezeigte Prompts

Empfehlung Empfohlen: Nicht empfohlen
Kontraktionen
Kürzungen in TTS-Prompts verwenden Ton bei Nachrichten ohne Kürzungen gestelzt und roboterhaft statt natürlich und dialogorientiert. Gesprochene Wörter wie „kann nicht“ und „Das sollten Sie nicht tun“ kann bestrafen und hart klingen.
ResponseSpeech (TTS)
Tut mir leid, ich kann keine Reservierung finden.

ResponseText
Tut mir leid, ich kann keine Reservierung finden.
ResponseSpeech (TTS)
Tut mir leid, ich kann keine Reservierung finden.

ResponseText
Tut mir leid, ich kann keine Reservierung finden.
Kommas
Verwenden Sie in Listen mit drei oder mehr Elementen serielle Kommas, um Klarheit zu schaffen. Ohne das Komma können einzelne Elemente in der Liste fälschlicherweise gehört oder als Gruppen gelesen. Zum Beispiel in „Osterglocken“, und Sonnenblumen“, „Gänseblümchen und Sonnenblumen“ klingen, als kämen sie zusammen. Bei „Narzis, Gänseblümchen und Sonnenblumen“ sind alle drei eindeutig getrennt.
ResponseSpeech (TTS)
Zu den beliebtesten Pflanzen gehören gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen.

ResponseText
Zu den beliebtesten Pflanzen gehören gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen.
ResponseSpeech (TTS)
Zu den beliebtesten Pflanzen gehören gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen.

ResponseText
Zu den beliebtesten Pflanzen gehören gelbe Rosen, Narzissen, Gänseblümchen und Sonnenblumen.
Ziffern
Verwenden Sie Ziffern statt Text, um visuelle Inhalte auf einen Blick zu sehen.
ResponseSpeech (TTS)
Dein Blutdruck liegt bei 100 über 80.

ResponseText
Dein Blutdruck beträgt 100/80.
ResponseSpeech (TTS)
Dein Blutdruck beträgt 100/80.

ResponseText
Dein Blutdruck beträgt einhundertachtzig.
Symbole
Verwenden Sie anstelle von Text spezielle Symbole, um visuelle Inhalte hervorzuheben. auf einen Blick.
ResponseSpeech (TTS)
Ihr letzter Kauf kostete 24,65 €.

ResponseText
Ihr letzter Kauf kostete 24,65 €.
ResponseSpeech (TTS)
Dein letzter Kauf kostete vierundzwanzig Euro und fünfundsechzig Cent.

ResponseText
Dein letzter Kauf kostete vierundzwanzig Euro und fünfundsechzig Cent.
Weniger schöne Sachen vermeiden
Nettigkeiten sorgen dafür, dass die Antworten distanziert und formell wirken. Vergessen Sie sie und behalten Sie freundlich und informell sind.
ResponseSpeech (TTS)
Deine Bestellung wurde geliefert.

ResponseText
Deine Bestellung wurde geliefert.
ResponseSpeech (TTS)
Klar, das kann ich dir sagen. Deine Bestellung wurde geliefert.

ResponseText
Klar, das kann ich dir sagen. Deine Bestellung wurde geliefert.
Vermeiden Sie Ausrufezeichen.
Sie können als Schreien wahrgenommen werden.
ResponseSpeech (TTS)
Du bist heute 2,4 km gelaufen.

ResponseText
Du bist heute 2,4 km gelaufen.
ResponseSpeech (TTS)
Du bist heute 2,4 km gelaufen.

ResponseText
Du bist heute 2,4 km gelaufen.
Uhrzeit
Verwenden Sie Ziffern: "5:15" statt „fünfzehn“ oder „Viertel nach fünf“. Für das 12-Stunden-Format wählen Sie AM oder PM aus.
ResponseSpeech (TTS)
Deine Lieferung sollte bis 08:15 Uhr ankommen.

ResponseText
Deine Lieferung sollte bis 08:15 Uhr ankommen.
ResponseSpeech (TTS)
Deine Lieferung sollte heute um 15 Minuten nach 20:00 Uhr bei dir eintreffen.

ResponseText
Deine Lieferung sollte heute um 15 Minuten nach 20:00 Uhr bei dir eintreffen.
Keine Monologe
Seien Sie informativ, aber halten Sie die Antworten kurz. Gehen Sie nicht in schwere Hände ohne einen klaren Vorteil für den Nutzer.
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 den Planeten und die Umwelt sehr wichtig. Letzter Monat 159 Stunden Energie verbraucht. Du hast in diesem Monat 58 Stunden deines Energie.

ResponseText
Energiesparen ist für den Planeten und die Umwelt sehr wichtig. Letzter Monat 159 Stunden Energie verbraucht. Du hast in diesem Monat 58 Stunden deines Energie.
Verwenden Sie kurze, einfache Wörter
Die einfache und verständliche Sprache spricht viele Menschen an und unterschiedlichsten Herkunft.
ResponseSpeech (TTS)
Deine letzte Blutzuckermessung lag bei 126.

ResponseText
Deine letzte Blutzuckermessung betrug 126 mg/dl.
ResponseSpeech (TTS)
Der vorletzte Blutzuckerspiegel lag bei 126.

ResponseText
Der vorletzte Blutzuckerspiegel lag bei 126.

Launcher-Anpinnen

In der Widget-Erweiterungsbibliothek kann die Schaltfläche Dieses Widget hinzufügen angezeigt werden. mit deinem Widget in Assistant. Füge den folgenden Empfänger hinzu, um das Anpinnen zu aktivieren Definition für AndroidManifest.xml:

<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

BIIs, die Inline-Inventar oder Webinventar unterstützen, können diese zu Ihren Widget-Ausführungen hinzufügen.

Inline-Inventar

Der folgende Code aus einer shortcuts.xml-Beispieldatei veranschaulicht, START_EXERCISE BII-Funktion konfiguriert für Inline-Inventar und Widget-Auftragsausführung:

<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 im obigen Beispiel ein Nutzer diese Funktion auslöst, indem er Assistant, „Start running with ExampleApp“, das Options-Bundle für das Die <app-widget>-Auftragsausführung enthält das folgende Schlüssel/Wert-Paar:

  • Schlüssel = “exerciseName”
  • Wert = “RunningShortcut”

Webinventar

Der folgende Code aus der Beispieldatei shortcuts.xml zeigt eine Funktion, aktiviert für Webinventar und Widget-Ausführung:

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

App Actions testen

Verwenden Sie das App Actions-Testtool, eine Funktion des Google Assistant-Plug-ins für Android Studio, um Widgets auf einem physischen oder virtuellen Gerät zu testen Zur Verwendung Test-Tool verwenden, gehen Sie folgendermaßen vor:

  1. Verbinden Sie das Testgerät mit der laufenden App.
  2. Gehen Sie in Android Studio zu Tools > App Actions > App Actions-Test Tool.
  3. Klicken Sie auf Vorschau erstellen.
  4. Führen Sie Ihre App mit Android Studio auf Ihrem Testgerät aus.
  5. Verwende die Assistant App auf deinem Testgerät, um deine App Action zu testen. Für zum Beispiel „Hey Google, wie viele Kilometer bin ich gelaufen?“ diese Woche bei ExampleApp?“
  6. Beobachten Sie das Verhalten Ihrer App oder verwenden Sie den Android Studio-Debugger, um um das gewünschte Aktionsergebnis zu verifizieren.

Qualitätsrichtlinien

In diesem Abschnitt werden die wichtigsten Anforderungen und Best Practices für integrierst du App Actions in Widgets.

Inhalte in Widgets

  • (Erforderlich) In Ihren Widgets dürfen keine Anzeigen eingeblendet werden.
  • Der Widget-Inhalt sollte sich ganz darauf konzentrieren, die Absicht zu erfüllen. Das sollten Sie nicht tun: mit einem Widget mehrere Intents zu erreichen oder irrelevante Inhalte hinzuzufügen.

Authentifizierung verarbeiten

  • (Erforderlich) Wenn die Nutzerauthentifizierung zum Abschließen eines Nutzerflusses erforderlich ist, ein Widget zurückgeben, das erklärt, dass der Nutzer mit der App fortfahren muss. Die Inline-Nutzerauthentifizierung in Google Assistant wird für die App nicht unterstützt Aktionen.
  • Wenn Nutzer zulassen, dass deine App Daten mithilfe von Widgets anzeigt, kannst du eine Fehler-Widget zur Laufzeit für nicht autorisierte Nutzer.

Fallback-Intents

  • (Erforderlich) Geben Sie in der Datei shortcuts.xml immer ein Fallback an. <intent> zusätzlich zu deiner Widget-Ausführung für ein über die gegebene Fähigkeit verfügt. Ein Fallback-Intent ist ein <intent>-Element, für das keine <parameter>-Werte.

    So kann Assistant eine Aktion ausführen, wenn Die Nutzerabfrage enthält keine Parameter, die für die andere Auftragsausführung erforderlich sind. Elemente, die in der Capability definiert sind. Hiervon ausgenommen sind keine erforderliche Parameter für diese Funktion. In diesem Fall wird nur das Widget Erfüllung ist erforderlich.

  • Verwenden Sie den Fallback-Intent, um den entsprechenden Bildschirm in Ihrer App zu öffnen. nicht den Startbildschirm.

Der folgende Code aus einer shortcuts.xml-Beispieldatei veranschaulicht, <capability> mit einem Fallback-<intent>, der eine primäre Auftragsausführung in Höhe von <app-widget>:

<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 Daten bei Google Play

In diesem Abschnitt werden die Endnutzerdaten aufgeführt, die von der neuesten Version des Widget-Erweiterungsbibliothek.

Dieses SDK sendet vom Entwickler bereitgestellte Sprachausgabe-Antworten, die werden dem Nutzer von Google Assistant per Spracheingabe angesagt Technologie. Diese Informationen werden nicht von Google gespeichert.

App-Aktionen können auch Metadaten von Clientanwendungen für folgende Zwecke erfassen:

  • Sie können die Akzeptanzraten verschiedener SDK-Versionen überwachen.
  • Bezifferung der Nutzung von SDK-Funktionen in Apps