建構應用程式動作

應用程式動作可讓使用者透過詢問 Google 助理或使用 Google 助理建議的 Android 捷徑,在您的 Android 應用程式中啟動功能。以下是使用應用程式動作擴充 Android 應用程式的主要步驟:

  1. 辨別要觸發的應用程式內功能及其相符的內建意圖 (BII)
  2. 提供 BII 的執行要求詳細資料。
  3. 推送應用程式動作的快速指令至 Google 助理。
  4. 使用測試裝置預覽應用程式動作。
  5. 建立應用程式的測試版本。
  6. 要求審查和部署應用程式動作。

您可以視需要定義動態捷徑,以便提供給 Google 助理向使用者推薦捷徑。請按照應用程式動作程式碼研究室的說明,使用範例應用程式建立應用程式動作。

相關規定

在開發應用程式動作之前,請確認您和應用程式符合下列需求:

  • 您必須擁有可存取 Google Play 管理中心的 Google 帳戶。
  • 應用程式必須發布至 Google Play 商店,因為應用程式動作僅適用於在該發布位置的應用程式。另外,也請確定應用程式不適合在工作資料夾中使用,因為 Google Play 管理版不支援應用程式動作。
  • 您必須使用實體或虛擬裝置,才能測試應用程式動作。
  • 您需要最新版的 Android Studio
  • 您必須使用同一個 Google 帳戶登入 Android Studio、測試裝置上的 Google 應用程式,以及 Google Play 管理中心。
  • 您必須在測試裝置上設定 Google 助理,然後按住「主畫面」按鈕以進行測試。

比對內建意圖與應用程式功能

找出使用者可透過語音要求直接跳至 Android 應用程式中的功能,並檢閱內建意圖參考資料,找出適合您用途的 BII。BII 會針對要執行的工作建立使用者查詢模型,因此,請找出符合應用程式重要功能和使用者流程的 BII。

有些常見 BII 是幾乎任何 Android 應用程式都可使用,例如使用 actions.intent.GET_THING BII 將應用程式內搜尋延伸至 Google 助理,或是實作 actions.intent.OPEN_APP_FEATURE BII,讓使用者利用語音啟動特定應用程式功能。

您也可以透過 BII 啟用「產業」或特定類別用途。舉例來說,訂餐應用程式可以使用 actions.intent.ORDER_MENU_ITEM BII。

為了確保使用者能夠獲得良好的體驗,並避免可能要等待核准,請確保您導入的每個 BII 都具有應用程式內功能的關聯性。

應用程式動作的運作原理,是從 Google 助理應用程式啟動 Android 意圖,將使用者直接導向應用程式中的特定內容。您可以指定 targetClasstargetPackage 欄位來定義意圖以明確啟動活動的意圖。如果您的應用程式已經實作 Android 深層連結網址,您可以選擇將意圖設為使用深層連結執行要求。詳情請參閱「測試活動深層連結」一節。

提供內建意圖的執行要求詳細資料

大部分的應用程式動作建構是在 Android 應用程式的 shortcuts.xml 資源檔案中宣告功能,並在其中指定您挑選的 BII 及對應的執行要求。BII 會為使用者查詢的作業建立模型,而執行要求意圖則會向 Google 助理提供如何執行工作的資訊。

shortcuts.xml 檔案中,<capability> 元素便代表 BII,而每項執行要求則以 <intent> 元素代表:

<shortcuts>
    <capability android:name="actions.intent.ORDER_MENU_ITEM">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.example.app"
            android:targetClass="com.example.app.browse">
            <parameter
                android:name="menuItem.name"
                android:key="query">
            </parameter>
        </intent>
    </capability>

多數的 BII 都會依據 schema.org 實體,從使用者查詢中擷取意圖參數。然後,應用程式便會用這些 BII 參數將使用者導向所選功能。舉例來說,上述的程式碼會將 menuItem.name BII 參數對應至 query Android intent 參數。

如果您要使用深層連結執行動作,請使用 urlTemplate 欄位定義 Google 助理產生的深層連結網址:

<shortcuts>
    <capability android:name="actions.intent.ORDER_MENU_ITEM">
        <intent android:action="android.intent.action.VIEW">
            <url-template android:value="myfoodapp://browse{?query}" />
            <parameter android:name="menuItem.name"
                android:key="query"
                android:mimeType="text/*">
            </parameter>
        </intent>
    </capability>
</shortcuts>

如需在 shortcuts.xml 檔案中加入應用程式動作的重要詳細資料,請參閱「建立 shortcuts.xml」。該頁面也會說明如何指定應用程式預期的參數值。

實作 GET_THING 內建意圖

如果您的應用程式有搜尋功能,您必須針對該函式實作 actions.intent.GET_THING BII。然後當使用者查詢下列內容時,Google 助理會將使用者導向應用程式的搜尋功能:「Ok Google,在範例應用程式中搜尋範例項目。」

在您的 shortcuts.xml 檔案中,當您實作任何其他 BII 時,請為 actions.intent.GET_THING BII 實作 <capability>。只要提供至少一項執行要求,將使用者查詢傳送至應用程式的搜尋功能,就可以針對 GET_THING 使用多個執行要求。

以下範例是在 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 參數。然後使用查詢執行搜尋,並在使用者介面中顯示結果。

選用:將應用程式動作的快速指令推送至 Google 助理

定義動作的功能後,使用者就能透過說出「Ok Google,用範例應用程式點一份披薩。」之類的指令啟動動作。Google 助理可以適時為 Android 使用者提供操作建議,讓使用者搜尋並重播您的動作。Google 助理可以提供動態和靜態快速鍵的建議。

如要將動態捷徑推送至 Google 助理,請使用 Google 捷徑整合程式庫。這個 Jetpack 程式庫可讓 Google 助理擷取捷徑,並在適當時機向使用者提供捷徑。

詳請請參閱「推送動態捷徑給 Google 助理」。

預覽應用程式動作

在開發和測試期間,請使用 Android Studio 版的 Google 助理外掛程式,以測試應用程式動作是否可於您的應用程式中正常運作。外掛程式會為 Google 帳戶建立 Google 助理應用程式動作預覽。使用這組測試工具,即可在實體測試裝置或模擬器上提供您預期使用者會提出的輸入參數所產生的 BII,藉此測試執行要求。

當您預覽應用程式動作時,可以在裝置上用語音觸發查詢。這項功能僅適用於應用程式動作 BII 參考資料中列出的查詢內容。請只在示範時使用語音觸發功能,而不用於一般測試。

將應用程式送交審查前,請使用 Google Play 管理中心的開發人員工具,以草稿模式測試應用程式。如要進一步瞭解如何使用 Google Play 管理中心部署應用程式草稿,請參閱「準備及發布版本」一文。

建立測試版本

當您準備好邀請其他測試人員測試應用程式動作時,請建立應用程式的內部或封閉測試測試版。根據預設,內部和封閉測試版測試人員可以存取已審核並獲得核准的應用程式動作。

如要授予所有應用程式動作 (包括未經核准的動作) 的測試存取權限,請指示測試人員加入應用程式動作開發計畫 Google 網路論壇。這個群組的成員可存取封閉和內部測試版中的所有應用程式動作,無需使用應用程式動作測試工具建立預覽。加入群組後,最多可能需要三小時才能取得存取權限。

要求審查和部署應用程式動作

應用程式動作必須通過審查和核准,使用者才能使用您發布的應用程式或公開測試版。應用程式動作審查不會影響您的 Android 應用程式在 Google Play 內的評論及部署狀態。即使應用程式提交內容已通過核准並發布至 Play 商店,shortcuts.xml 仍可能還在接受 Google 審查。除非應用程式也獲得核准,否則應用程式動作將無法正常運作。

部署應用程式時,應用程式動作依然會持續有效。不過,重新部署的版本會經過 Google 審查。如果新版本無法正常運作,或是含有違反政策的內容,則 Google 保留停用應用程式內的應用程式動作的權利。

如果想提交應用程式動作進行審查,請進行下列事項:

  1. 接受 Google Play 管理中心的應用程式動作服務條款 (依序點選「進階設定」>「應用程式動作」):

    Google Play 管理中心的應用程式動作服務條款。

  2. 上傳應用程式 (包含 shortcuts.xml) 至 Google Play 管理中心,如同正常發布程序。

  3. 將應用程式上傳至 Play 管理中心之後,我們會透過您在 Play 管理中心帳戶中設定的電子郵件地址與您聯絡,並提供更多與應用程式動作審查狀態相關的資訊。您也可以聯絡 Google 助理開發人員支援團隊,詢問應用程式動作審查狀態的相關問題。在聯絡表單中,輸入您的應用程式套件 ID,然後在「How can we help you?」(您需要哪方面的協助?) 選擇方塊中選擇「App Action review」(應用程式動作審查)

如要使用深層連結透過應用程式動作啟動 Activity,您必須使用深層連結網址設定 Activity,並在 Android 應用程式資訊清單中設定對應的意圖篩選器。

如果想測試使用者是否能夠存取活動,以及能使用深層連結透過應用程式動作觸發活動,請執行以下 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"

如果活動並未正確以 adb 指令啟動,請檢查以下項目:

  • 在應用程式資訊清單檔案內,活動設有 android:exported=true,以便使用 Google 助理產生的意圖啟動該活動。
  • 如果您使用應用程式連結網址,請按照「處理 Android 應用程式連結」說明的步驟操作。

應用程式動作政策

應用程式動作必須遵守特定政策,確保觸發通知的使用者能獲得預期的體驗。請在提交應用程式前詳閱這些政策,以便提供最佳使用者體驗,並避免 Play 商店的審查延遲或遭到拒絕。

  • 將使用者導向使用者想看的內容

    應用程式動作內建意圖 (BII) 和/或參數只能將使用者導向至相關且使用者預期的動作。包括應用程式內內容、網站內容,或是以切片或小工具形式顯示的資訊,只要使用者體驗符合使用者預期即可。

    舉例來說,ORDER_MENU_ITEM BII 的實作可協助使用者針對特定菜單品項或料理類型啟動訂單。這項政策的唯一例外是 OPEN_APP_FEATURE BII 會將使用者導向應用程式的主畫面。

  • 將使用者導向相關的網頁內容

    如果使用者被重新導向至網頁內容,網站必須與使用者的預期動作相關,且由品牌擁有。

    例如,將觸發 GET_RESERVATION BII 的使用者重新導向至 google.com/travel,但該使用者不屬於應用程式品牌 exampledomain.com,即構成違規。另一個違規的例子是,將觸發 GET_CALL_HISTORY BII 的使用者重新導向至 exampledomain.com/payment,並要求他們購買。

  • 實作相關的應用程式動作 BII

    實作的 BII 必須與應用程式的內容和功能直接相關。

    舉例來說,如果您的應用程式屬於「Communications Play 商店」類別,請勿實作 ORDER_MENU_ITEM BII,後者適用於「餐飲」類別中的應用程式。

  • 導入相關的自訂意圖

    「自訂意圖」的定義查詢與應用程式的內容和功能相關。舉例來說,針對交通工具 Play 商店類別中的應用程式,建立意圖 custom.action.intent.GET_RECIPE 的意圖。