新增 Android 應用程式連結

Android 應用程式連結是 HTTP 網址,可將使用者直接導向 Android 應用程式中的特定內容。Android 應用程式連結可以為應用程式帶來更多流量,幫助您探索最常使用的應用程式內容,也能讓使用者用更輕鬆的方式分享和尋找已安裝應用程式裡的內容。

若要新增 Android 應用程式連結支援:

  1. 在資訊清單中建立意圖篩選器。
  2. 在應用程式活動中加入程式碼,以便控制連入的連結。
  3. 使用 Digital Asset Links 為應用程式和網站建立關聯。

Android Studio 2.3 以上版本的應用程式連結小幫手可以簡化處理過程,用精靈的方式帶領使用者進行每個步驟,如下所示。

如果想進一步瞭解應用程式連結的運作方式和好處,請參閱「控制 Android 應用程式連結」

新增意圖篩選器

Android Studio 的應用程式連結小幫手可以協助您在資訊清單中建立意圖篩選器,並將網站現有的網址對應到應用程式的活動。應用程式連結小幫手也會在每個對應的活動中心曾範本 Java 程式碼,以便控制意圖。

若要新增意圖篩選器和網址控制,請按照以下步驟操作:

  1. 選取「Tools」>「App Links Assistant」。
  2. 按一下「Open URL Mapping Editor」,然後再按「URL Mapping」清單底部的「Add」,新增網址對應。
  3. 為新的網址對應新增詳細資料:
    應用程式連結小幫手會帶您設定基礎的網址對應

    圖 1. 為網站連結結構新增基礎的詳細資料,以便將網址對應到應用程式活動。

    1. 在「Host」欄位輸入網站網址。
    2. 為想對應的網址加入 pathpathPrefixpathPattern。舉例來說,如果您有一個分享食譜的應用程式,所有食譜都可用同個活動取得,而相對網站的食譜都在同一個 /recipe 目錄內,請用 pathPrefix 然後輸入 /recipe。如此一來,http://www.recipe-app.com/recipe/grilled-potato-salad 這個網址便可以對應到您在以下步驟所選擇的活動了。
    3. 點選網址應該帶領使用者前往的活動
    4. 按下「OK」。
  4. 應用程式連結小幫手會根據網址對應,在 AndroidManifest.xml 檔案中加入意圖篩選器,並在「Preview」欄位標記出來。如果想變更任何設定,請按一下「Open AndroidManifest.xml」,即可編輯意圖篩選器。(進一步瞭解 Android 的意圖篩選器。)

    注意:如果想在不更新應用程式的情況下支援更多連結,您需要定義可以支援未來新增網址的網址對應。另外,記得在應用程式主畫面加入網址,以便列入搜尋結果。

  5. 如果想檢查網址對應是否正確,請在「Check URL Mapping」欄位中輸入網址,然後按一下「Check Mapping」。如果可以正常使用,成功訊息便會顯示您輸入的網址可以對應到您選擇的活動。

處理連入連結

確認網址對應可以正確運作後,您需要加入邏輯,以便控制您建立的意圖。

  1. 按一下應用程式連結小幫手的「Select Activity」。
  2. 從清單中選取活動,然後按一下「Insert Code」。

應用程式連結小幫手會在活動的 Java 檔案中新增類似下面這段程式碼 (請注意:應用程式連結小幫手目前不支援 Kotlin,所以您需要手動新增這段程式碼):

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val appLinkIntent = intent
    val appLinkAction = appLinkIntent.action
    val appLinkData = appLinkIntent.data

}

Java

// ATTENTION: This was auto-generated to handle app links.
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();

不過,這段程式碼本身還不算完成。您現在必須根據 appLinkData 裡的網址採取行動,譬如顯示對應的內容等等。舉食譜分享應用程式的例子來說,程式碼看起來可能會像這樣:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    handleIntent(intent)
}

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    handleIntent(intent)
}

private fun handleIntent(intent: Intent) {
    val appLinkAction = intent.action
    val appLinkData: Uri? = intent.data
    if (Intent.ACTION_VIEW == appLinkAction) {
        appLinkData?.lastPathSegment?.also { recipeId ->
            Uri.parse("content://com.recipe_app/recipe/")
                    .buildUpon()
                    .appendPath(recipeId)
                    .build().also { appData ->
                        showRecipe(appData)
                    }
        }
    }
}

Java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ...
  handleIntent(getIntent());
}

protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  handleIntent(intent);
}

private void handleIntent(Intent intent) {
    String appLinkAction = intent.getAction();
    Uri appLinkData = intent.getData();
    if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null){
        String recipeId = appLinkData.getLastPathSegment();
        Uri appData = Uri.parse("content://com.recipe_app/recipe/").buildUpon()
            .appendPath(recipeId).build();
        showRecipe(appData);
    }
}

為應用程式和網站建立關聯

為應用程式設定網址支援後,應用程式連結小幫手會產生一組 Digital Asset Links 檔案,您可以用來為網站和應用程式建立關聯。

除了使用 Digital Asset Links 檔案之外,您也可以用 Search Console 為網站和應用程式建立關聯

如果想用應用程式連結小幫手為應用程式和網站建立關聯,請按一下應用程式連結小幫手的「Open Digital Asset Links File Generator」,然後按照以下步驟操作:

應用程式連結小幫手會帶您設定基礎的網址對應

圖 2. 輸入網站和應用程式的詳細資料,以便產生 Digital Asset Links 檔案。

  1. 輸入您的網站網域應用程式 ID
  2. 若要在 Digital Asset Links 檔案中加入對密碼專用 Smart Lock 功能的支援,請選取「Support sharing credentials between the app and the website」,然後輸入網站的登入網址。這樣做會在 Digital Asset Links 檔案中加入以下字串,宣告應用程式和網站分享同一組登入憑證:delegate_permission/common.get_login_creds進一步瞭解如何在應用程式中支援密碼專用 Smart Lock
  3. 指定簽署設定,或選取 KeyStore 檔案。請確認應用程式的發布子版本和偵錯版本皆已選擇了正確的設定或 KeyStore 檔案。如果您想設定生產版本,請用發布設定。若要測試版本,請用偵錯設定。
  4. 按一下「Generate Digital Asset Links file」。
  5. 待 Android Studio 產生檔案後,按一下「Save file」下載檔案。
  6. 上傳 assetlinks.json 檔案到您位於 https://<yoursite>/.well-known/assetlinks.json 的網站上,讀取權限設定為所有人。

    重要事項:系統會使用加密 HTTPS 通訊協定驗證 Digital Asset Links 檔案。請確認 assetlinks.json 檔案可以透過 HTTPS 連線存取,無論應用程式的意圖篩選器是否有 https 都一樣。

  7. 按一下「Link and Verify」,確定您已上傳正確的 Digital Asset Links 檔案到正確的位置。

請參閱「宣告網站關聯」,進一步瞭解如何透過 Digital Asset Links 檔案為網站和應用程式建立關聯。

測試您的應用程式連結

如果想驗證連結是否可以開啟正確活動,請按照以下說明步驟操作:

  1. 按一下應用程式連結小幫手的「Test App Links」。
  2. 在「URL」欄位中輸入您想測試的網址,例如:http://recipe-app.com/recipe/grilled-potato-salad
  3. 圖 3. 當您測試的網址成功對應到應用程式活動時,應用程式連結小幫手會顯示成功訊息,並開啟應用程式到指定內容。

  4. 按一下「Run Test」。
  5. 如果網址對應設定有誤或不存在,「Test App Links」視窗的網址下方便會顯示錯誤訊息。如果對應的網址存在,Android Studio 會在裝置或模擬器指定的活動中,啟動您的應用程式,而不會顯示用來去除混淆的對話方塊 (應用程式「選擇工具」),並且在「App Link Testing」視窗內中顯示成功訊息。如果 Android Studio 無法成功啟動應用程式,Android Studio 的「Run」視窗內會顯示錯誤訊息。

如果想透過應用程式連結小幫手測試 Android 應用程式連結,則必須有連結的裝置,或是可以執行 Android 6.0 (API 級別 23) 以上版本的虛擬裝置。如果想瞭解詳情,請參閱如何連接裝置建立 AVD