App-Aufruf im Vordergrund

Mit App Actions können Nutzer mit Google Assistant sprechen und direkt zu bestimmten App-Zielen wechseln, wenn sie zum Beispiel sagen: „Hey Google, bestell mir eine Fahrt in der Beispiel-App.“ Durch das Aufrufen von Apps im Vordergrund kannst du die Nutzung weiter verbessern, wenn ein Nutzer deine App bereits geöffnet hat.

Durch das Aufrufen von Apps im Vordergrund können integrierte Intents (BIIs) abgeglichen werden, ohne dass der App-Name erwähnt werden muss, während eine bestimmte Aktivität im Vordergrund des Geräts ausgeführt wird.

Angenommen, ein Nutzer hat Ihre Mitfahrdienst-App im Vordergrund angezeigt und sagt oder gibt "Bestell mir eine Fahrt nach Mountain View" an Google Assistant. Ihre Anwendung verwendet diese Eingabe, um das Zielfeld auf Mountain View festzulegen. Wenn der Nutzer dann „Order me a Ride from SFO“ (Bestelle mir eine Fahrt ab SFO) sagt oder eingibt, kann die App den Abholort festlegen und gleichzeitig den Status der App beibehalten.

Einschränkungen

Der Aufruf von Apps im Vordergrund ist nur für die folgenden BIIs verfügbar:

Informationen zur Sprachunterstützung und Beispielabfragen in Bezug auf den Aufruf von Apps im Vordergrund für eine bestimmte BII finden Sie in der Referenz zum integrierten Intent.

Aufrufe von Apps im Vordergrund unterstützen

Wenn Sie den Aufruf von Apps im Vordergrund unterstützen möchten, müssen Sie ein Auftragsausführungsverhalten basierend auf der gewünschten Aktivität im Vordergrund hinzufügen. Wenn sich diese Aktivität im Vordergrund befindet und die App-Aktion aufgerufen wird, übergibt Assistant den Deeplink-Intent mit einem zusätzlichen Flag an diese Aktivität, damit der Status Ihrer App aktualisiert werden kann.

So implementieren Sie den Aufruf einer App im Vordergrund für eine BII:

  1. Füge in der Datei shortcuts.xml ein <intent>-Tag zu der BII-<capability> hinzu, die das Aufrufen von Apps im Vordergrund unterstützen soll.
  2. Füge innerhalb des <intent>-Tags ein <extra>-Tag hinzu.
  3. Legen Sie im <extra>-Tag android:key auf "requiredForegroundActivity" und für android:value die Aktivität fest, die im Vordergrund ausgeführt werden soll. Geben Sie die Aktivität ohne Klassenabkürzungen an. Verwenden Sie dazu den Namen Ihres App-Pakets, gefolgt von einem Schrägstrich (/) und dem Namen der Aktivität: APP_PACKAGE_NAME/ACTIVITY_NAME
  4. Implementieren Sie bei der Vordergrundaktivität, die Sie für "requiredForegroundActivity" angegeben haben, die Methode onNewIntent(), um einen Deeplink-Intent zu verarbeiten, wobei das Flag SINGLE_TOP festgelegt ist. Assistant übergibt den Deeplink-Intent mit diesem Flag als Auftragsausführung, wenn die angegebene Aktivität im Vordergrund ausgeführt wird.
  5. Behandeln Sie onNewIntent()-Aufrufe als Aktualisierung Ihrer Aktivität im Vordergrund und verwalten Sie den Status in dieser Aktivität mithilfe von Parametern, die aus dem Deeplink extrahiert wurden.

Wenn Ihre App eine Routeraktivität verwendet, damit alle externen Deeplinks eine einzelne Gatekeeping-Routeraktivität auslösen, lesen Sie Routeraktivitäten verarbeiten.

Beispiel

Das folgende Snippet aus einer Beispieldatei shortcuts.xml zeigt, wie das Attribut requiredForegroundActivity hinzugefügt wird:

  <capability name="actions.intent.CREATE_TAXI_RESERVATION">
      <!-- Trigger with foreground app invocation if MainActivity is in the foreground. -->
      <intent
          android:targetClass="com.example.app.MainActivity"
          android:targetPackage="com.example.app">
          <parameter
              android:name="taxiReservation.dropoffLocation.name"
              android:key="dropoff" />
          <extra
              android:key="requiredForegroundActivity"
              android:value="com.example.app/com.example.app.MainActivity" />
      </intent>
      <!-- This won't trigger if MainActivity is in the foreground. -->
      <intent
          android:targetClass="com.example.app.MainActivity"
          android:targetPackage="com.example.app">
          <parameter
              android:name="taxiReservation.dropoffLocation.name"
              android:key="dropoff" />
      </intent>
  </capability>

Nutzerberechtigungen

In den Geräteeinstellungen müssen Nutzer „Text auf Bildschirm verwenden“ aktivieren, damit der App-Aufruf im Vordergrund funktioniert.

Damit ein Nutzer eine App im Vordergrund aufrufen kann, muss er die Geräteeinstellung Text auf Bildschirm verwenden aktiviert haben. Der Ort und der genaue Name dieser Einstellung können je nach OEM oder Gerätehersteller variieren. Beispielsweise kann die Geräteeinstellung auf dem Gerät eines Nutzers stattdessen Bildschirmkontext verwenden genannt werden.

Um diese Android-Einstellung auf einem Pixel aufzurufen, rufen Sie zuerst Einstellungen > Apps & Benachrichtigungen > Standard-Apps > Assistenten-App auf. Aktivieren Sie dann auf dem Bildschirm Assistent und Spracheingabe die Option Text auf Bildschirm verwenden.

Aufruf testen

So testen Sie den Aufruf Ihrer App im Vordergrund:

  1. Folgen Sie der Anleitung im Abschnitt Nutzerberechtigungen, um die Geräteeinstellung Text auf Bildschirm verwenden zu aktivieren.
  2. Öffnen Sie die App und rufen Sie die Aktivität auf, die Sie als erforderliche Aktivität im Vordergrund angegeben haben.
  3. Halten Sie die Startbildschirmtaste gedrückt, um Assistant als Overlay in der aktuellen App zu öffnen. Geben Sie eine Abfrage ein, die der von Ihnen implementierten BII entspricht, ohne den App-Namen selbst zu erwähnen. Wenn der Vorgang erfolgreich ist, wird Ihre Anwendung automatisch anhand Ihrer Abfrage aktualisiert. Dabei wird der Status beibehalten, ohne dass die Aktivität neu gestartet wird.

Routeraktivitäten verarbeiten

Einige Apps verarbeiten alle externen Deeplinks über eine einzige Gatekeeping-Router-Aktivität. Die Routeraktivität startet dann die entsprechende Geschäftslogikaktivität (nach allen Prüfungen und Validierungen) und gibt die Geschäftslogikaktivität in den Vordergrund zurück.

Das Auslösen eines Deeplinks kann dazu führen, dass die Routeraktivität im Aufgabenstack oben über der Aktivität im Vordergrund angezeigt wird. Bei Apps, die eine Routeraktivität verwenden, muss die Routeraktivität den Intent liefern, der von Google Assistant an die aktuelle Instanz der Aktivität im Vordergrund gesendet wurde. Wie Sie diese Anforderung erfüllen, hängt davon ab, wo die Routeraktivität beginnt.

Wenn Ihr Router im selben Aufgabenstack wie Ihre Geschäftslogikaktivität startet, leiten Sie den Intent mit dem bitweisen OR von SINGLE_TOP, CLEAR_TOP und NEW_TASK weiter:

Kotlin

Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK

Java

Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK

Wenn Ihr Router in einem separaten Aufgabenstack von Ihrer Geschäftslogikaktivität startet, leiten Sie den Intent stattdessen mit dem Flag SINGLE_TOP an die Geschäftslogikaktivität weiter.