Отправьте динамические ярлыки в Ассистент

Ярлыки Android предоставляют пользователям быстрые способы выполнения действий или доступа к контенту в приложении. Ассистент может заранее предлагать пользователям динамические ярлыки вашего Android в нужное время, позволяя им легко находить и воспроизводить ваши голосовые функции.

Например, вы можете нажать ярлык для каждой заметки, которую пользователь создает в вашем приложении для создания заметок. Вы делаете динамические ссылки доступными для отображения на поверхностях Google, таких как Ассистент, добавляя в свой проект библиотеку Jetpack интеграции Google Shortcuts . Эта библиотека позволяет Помощнику использовать динамические ярлыки, которые вы нажимаете с помощью класса ShortcutManagerCompat , который является оболочкой Jetpack для API ShortcutManager .

Когда вы используете библиотеку интеграции ярлыков Google в своем приложении, динамические ярлыки, которые вы отправляете в Google, видны пользователям в виде голосовых предложений в приложении Assistant. Вы можете отправить неограниченное количество динамических ярлыков в Ассистент, используя метод pushDynamicShortcut() библиотеки ShortcutManagerCompat .

Настройте свой проект разработки

Для добавления функций динамических ярлыков в ваше приложение требуется библиотека интеграции Google Shortcuts, которая представляет собой библиотеку Android Jetpack. В этом разделе описывается, как настроить проект разработки приложения для включения этой библиотеки.

Чтобы добавить эту библиотеку Jetpack и настроить свой проект, выполните следующие действия:

  1. Обновите файл gradle.properties для работы с библиотеками Jetpack:

    gradle.properties

    android.useAndroidX=true
    # Automatically convert third-party libraries to use AndroidX
    android.enableJetifier=true
    
  2. Добавьте зависимости библиотеки Jetpack в ваш build.gradle :

    приложение/build.gradle

    dependencies {
     implementation "androidx.core:core:1.6.0"
     implementation "androidx.core:core-google-shortcuts:1.0.1"
     ...
    }
    

    В предыдущем примере кода вы указываете две библиотеки Jetpack в качестве зависимостей. Библиотека androidx.core:core:1.6.0 содержит класс ShortcutManagerCompat , который вы используете для отправки динамических ярлыков в Google.

    androidx.core:core-google-shortcuts:1.0.1 — это библиотека интеграции ярлыков Google. Эта библиотека не содержит API для разработчиков. Добавляя его в качестве зависимости, вы позволяете Ассистенту использовать динамические ярлыки, которые вы нажимаете с помощью класса ShortcutManagerCompat .

Нажмите динамические ярлыки

Чтобы отправить динамические ярлыки, которые могут отображаться в Ассистенте, вы сначала создаете ярлык с помощью класса ShortcutInfoCompat.Builder() .

Затем вы нажимаете ярлык с помощью метода ShortcutManagerCompat.pushDynamicShortcut() . Ярлыки активируются всякий раз, когда пользователь выполняет соответствующее действие в вашем приложении. Следующий пример кода запускает ярлык каждый раз, когда пользователь размещает заказ в приложении для доставки еды:

ПримерОрдерактивности

Котлин

// Define the dynamic shortcut for a menu item
var intent = Intent(context, DisplayOrderActivity::class.java)
intent.action = Intent.ACTION_VIEW
var shortcutInfo = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
        "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino")
    )
    .setIntent(intent) // Push the shortcut
    .build()

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo)

Ява

// Define the dynamic shortcut for a menu item
Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat.Builder shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
      "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino"))
    .setIntent(intent)
    .build();

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

id , указанный в методе ShortcutInfoCompat.Builder в предыдущем примере кода, определяет shortcutId результирующего объекта ярлыка. Этот id должен быть уникальным строковым литералом. Подробности см. в документации по ярлыкам Android .

В предыдущем примере метод addCapabilityBinding привязывает динамический ярлык к capability с тем же android:name определенным в shortcuts.xml . Этот метод позволяет связать ярлык с параметром встроенного семантического намерения (BII).

Динамические ярлыки иногда запускаются без какой-либо конкретной связи с параметрами BII. При вызове пользователя Assistant запускает intent , определенное в ярлыке, для выполнения действия. В следующем примере показан динамический ярлык без привязки параметров:

Котлин

var intent: Intent = Intent(context, DisplayOrderActivity::class.java)
intent.setPackage(this, "com.sample.app")
intent.setAction(Intent.ACTION_VIEW)

var shortcutInfo: ShortcutInfoCompat = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Order coffee")
    .setLongLabel("Order a cup of coffee")
    .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
    .setIntent(intent)
    .build()

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Ява

Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setPackage(this, "com.sample.app");
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
  .setShortLabel("Order coffee")
  .setLongLabel("Order a cup of coffee")
  .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
  .setIntent(intent)
  .build();

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Проверьте динамические сочетания клавиш с помощью Ассистента

Когда Google Assistant успешно получает динамический ярлык из вашего приложения, этот ярлык может отображаться в качестве предложения голосового ярлыка в приложении Assistant Android. Приложение «Ассистент» предлагает самые последние ярлыки, использованные вашим приложением.

Чтобы протестировать динамические ярлыки с помощью Ассистента, выполните следующие действия:

  1. Создайте предварительный просмотр действий приложения и подготовьте тестовое устройство или эмулятор для тестирования действий, выполнив те же требования к настройке, что и для плагина Google Assistant .
  2. Откройте свое приложение и определите динамический ярлык для отправки. Затем выполните действие. Например, если вы нажимаете ярлык всякий раз, когда в приложении для создания заметок создается заметка, создайте новую заметку.
  3. Откройте «Ярлыки» в приложении «Настройки Ассистента» на вашем устройстве. Динамический ярлык появится в списке вашего приложения.