构建应用操作

应用操作可让用户通过询问 Google 助理或使用助理建议的 Android 快捷方式,启动其 Android 应用中的功能。以下是使用应用操作扩展 Android 应用的主要步骤

  1. 确定要触发的应用内功能及其匹配的内置 intent (BII)
  2. 提供 BII 的 fulfillment 详细信息。
  3. 将应用操作的快捷方式推送到助手。
  4. 在测试设备上预览应用操作。
  5. 创建应用的测试版本。
  6. 请求应用操作审核和部署。

您可以选择定义动态快捷方式并将其提供给助手,以便其可以向您的用户推荐这些快捷方式。通过遵循应用操作 codelab,使用示例应用创建应用操作。

要求

在开始开发应用操作之前,请确保您和您的应用符合以下要求

  • 您必须拥有可访问 Google Play 管理中心的 Google 帐号。
  • 您的应用必须发布到 Google Play 商店,因为应用操作仅适用于发布到该商店的应用。此外,请确保您的应用并非用于工作资料,因为 Managed Google Play 不支持应用操作。
  • 您需要一部实体设备或虚拟设备来测试您的应用操作。
  • 安装 Google 助理插件支持的最新兼容版 Android Studio。
  • 您必须使用相同的 Google 帐号登录 Android Studio、测试设备上的 Google 应用和 Google Play 管理中心。
  • 您必须在测试设备上设置助手,并通过长按主屏幕按钮进行测试。

将内置 intent 与应用功能匹配

确定用户可能希望通过语音请求跳转到的 Android 应用中的功能,并查阅内置 intent 参考,为您的用例找到合适的 BII。BII 旨在模拟用户对其要执行的任务的查询,因此请查找与应用中的关键功能和用户流匹配的 BII。

几乎所有 Android 应用都可以使用常见 BII,例如使用 actions.intent.GET_THING BII 将应用内搜索扩展到助手,或者通过实现 actions.intent.OPEN_APP_FEATURE BII,让用户通过语音启动特定的应用功能。

还有一些 BII 支持垂直(即特定类别)用例。例如,健身应用可以使用 actions.intent.START_EXERCISE BII。

为了确保出色的用户体验并避免可能的审批延迟,请确保您实现的每个 BII 都与您的应用内功能相关。

应用操作通过从助手应用启动 Android intent 来工作,以便将用户直接带到应用中的特定内容。您可以通过指定 targetClasstargetPackage 字段,显式定义 intent 来启动 activity。如果您的应用已实现 Android 深层链接网址,您可以选择将 intent 配置为使用深层链接进行 fulfillment。如需了解更多详情,请参阅测试您的 activity 深层链接部分。

为内置 intent 提供 fulfillment 详细信息

构建应用操作的主要工作是在 Android 应用的 shortcuts.xml 资源文件中声明一项功能,您可以在其中指定您选择的 BII 及其对应的 fulfillment。BII 模拟用户对任务的查询,而 fulfillment intent 则向助手提供有关如何执行该任务的信息。

在您的 shortcuts.xml 文件中,BII 表示为 <capability> 元素,每个 fulfillment 表示为 <intent> 元素

<shortcuts>
    <capability android:name="actions.intent.START_EXERCISE">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.example.app"
            android:targetClass="com.example.app.browse">
            <parameter
                android:name="exercise.name"
                android:key="exercise_name">
            </parameter>
        </intent>
    </capability>

对于大多数 BII,您会根据 schema.org 实体从用户查询中提取 intent 参数。然后,您的应用会使用这些 BII 参数将用户定向到所选功能。例如,以上代码会将 exercise.name BII 参数映射到 exercise_name Android intent 参数。

如果您使用深层链接来 fulfill 操作,请使用 urlTemplate 字段定义助手生成的深层链接网址

<shortcuts>
    <capability android:name="actions.intent.START_EXERCISE">
        <intent android:action="android.intent.action.VIEW">
            <url-template android:value="myexerciseapp://start{?exercise_name}" />
            <parameter android:name="exercise.name"
                android:key="exercise_name"
                android:mimeType="text/*">
            </parameter>
        </intent>
    </capability>
</shortcuts>

如需了解有关将应用操作添加到 shortcuts.xml 文件的重要详情,请参阅创建 shortcuts.xml。该页面还介绍了如何指定您的应用预期的参数值。

实现 GET_THING 内置 intent

如果您的应用具有搜索功能,您需要为该功能实现 actions.intent.GET_THING BII。然后,当用户发出诸如“Hey Google,在示例应用中搜索 Example Thing。”之类的查询时,助手可以将他们转到您的应用的搜索功能以获取应用内结果。

在您的 shortcuts.xml 文件中,为 actions.intent.GET_THING BII 实现 <capability>,就像您实现任何其他 BII 一样。您可以为 GET_THING 使用多个 fulfillment,前提是您至少提供一个将用户查询传递给应用搜索功能的 fulfillment。

以下是在 shortcuts.xml 中添加 actions.intent.GET_THING BII 的示例

  <capability android:name="actions.intent.GET_THING">
    <intent
      android:targetPackage="com.example.myapp"
      android:targetClass="com.example.myapp.MySearchActivity">
      <parameter android:name="thing.name" android:key="query" />
    </intent>
  </capability>

在搜索 Activity 中,从 intent 的额外数据中提取搜索查询,并将其传递给应用的搜索功能。在以上代码中,作为 query 键传递的搜索查询会映射到 "thing.name" BII 参数。然后,使用该查询执行搜索并在用户界面中显示结果。

可选:将应用操作的快捷方式推送到助手

为操作定义功能后,用户可以通过说出类似“Hey Google,在示例应用上订购披萨。”的短语来启动您的操作。助手可以在适当的时候向用户推荐 Android 快捷方式,让他们发现并重放您的操作。助手可以推荐动态快捷方式和静态快捷方式。

要将动态快捷方式推送到助手,请使用 Google 快捷方式集成库。此 Jetpack 库可让助手接收您的快捷方式,并在适当的时候将其推荐给用户。

如需了解更多详情,请参阅将动态快捷方式推送到助手

预览应用操作

在开发和测试期间,使用适用于 Android Studio 的Google 助理插件,测试应用操作是否适用于您的应用。该插件会在助手中为您的 Google 帐号创建应用操作的预览。使用测试工具,您可以通过为 BII 提供预期从用户那里接收的输入参数,在实体测试设备或模拟器上测试您的 fulfillment。

在预览应用操作时,您可以在设备上通过语音触发查询。此功能仅适用于应用操作 BII 参考中列出的查询。仅将语音触发用于演示,而不是用于常规测试。

在提交应用以供审核之前,使用 Google Play 管理中心的开发者工具以草稿模式测试您的应用。如需了解有关使用 Google Play 管理中心部署应用草稿的更多信息,请参阅准备和发布版本

创建测试版本

当您准备好与其他测试人员一起测试应用操作时,请创建应用的内部或封闭测试版本。默认情况下,您的内部和封闭版本测试人员可以访问已获得审核和批准的应用操作。

要授予对所有应用操作(包括未获批准的操作)的测试访问权限,请指示您的测试人员加入 应用操作开发计划 Google 小组。该小组成员可以访问封闭和内部测试版本中的所有应用操作,而无需使用应用操作测试工具创建预览。加入小组后,可能需要最多三个小时才能获得访问权限。

请求应用操作审核和部署

您的已发布应用或公开测试版本中的应用操作,在获得审核和批准之前,用户无法使用。应用操作审核不会影响您的 Android 应用在 Google Play 中的审核和部署状态。即使您的应用提交获得批准并发布到 Play 商店,您的 shortcuts.xml 也可能正在接受 Google 的审核。在获得该审核批准之前,应用操作不会对您的最终用户生效。

当您部署应用时,应用操作会保持激活状态。但是,重新部署的版本需要接受 Google 的审核。如果新版本无法正常工作或包含政策违规行为,Google 有权停用您的应用的应用操作。

要提交您的应用操作以供审核,请执行以下操作

  1. 在 Google Play 管理中心接受应用操作服务条款(高级设置 > 应用操作

    App Actions Terms of Service in the Google Play console.

  2. 按照正常的发布流程,将包含 shortcuts.xml应用上传到 Google Play 管理中心。

  3. 将应用上传到 Play 管理中心后,Google 会通过您的 Play 管理中心帐号中的电子邮件地址与您联系,提供有关应用操作审核状态的更多信息。您也可以联系助手开发者支持,咨询有关应用操作审核状态的问题。在联系表单中,提供您的应用软件包 ID,并在我们能为您提供哪些帮助?选择框中选择应用操作审核

要使用深层链接通过应用操作启动 Activity,该 Activity 必须设置深层链接网址,并且在 Android 应用清单中具有相应的 intent 过滤器。

要测试您的 activity 是否可访问以及是否可以使用深层链接通过应用操作触发,请运行以下 adb 命令

$ adb shell am start -a android.intent.action.VIEW -d "AppLinksURL"

例如

$ adb shell am start -a android.intent.action.VIEW -d "https://www.example.com/deeplink"

如果您的 activity 未通过 adb 命令正确启动,请检查以下事项

  • 在您的应用清单文件中,该 activity 具有 android:exported=true,因此可以使用 Google 助理中的 intent 启动。
  • 如果使用应用链接网址,请按照处理 Android 应用链接中的所有步骤操作。

应用操作政策

应用操作必须遵守特定政策,以帮助确保触发它们的用户获得预期的体验。在提交应用之前,请查看这些政策,以提供最佳用户体验并避免 Play 商店审核延迟或拒绝。

  • 将用户定向到用户期望的内容

    应用操作内置 intent (BII) 和/或参数必须仅将用户定向到相关且用户期望的操作。这可以包括应用内内容、网站内容,或切片或微件中显示的信息,只要用户期望该体验即可。

    例如,START_EXERCISE BII 的实现可帮助用户启动某种类型的锻炼,例如跑步或游泳。此政策的唯一例外是当您的 OPEN_APP_FEATURE BII 将用户定向到您的应用主屏幕时。

  • 实现相关的应用操作 BII

    实现的 BII 必须与应用的内容和功能直接相关。

    例如,如果您的应用属于通信 Play 商店类别,请勿实现 START_EXERCISE BII,该 BII 推荐用于健康与健身类别的应用。

  • 实现相关的自定义 intent

    自定义 intent 的已定义查询与应用的内容和功能相关。此政策的潜在违规示例是:为交通运输 Play 商店类别中的应用创建 intent custom.action.intent.GET_RECIPE,并附带查询模式“显示玉米煎饼食谱”。