Android App Links 與 iOS Universal Links 在深層連結路由機制上的差異

opoinstall
2026-06-23
5 min read

Android App Links 與 iOS Universal Links 深層路由機制比較。

App Links 與 Universal Links 有何不同? Android App Links 依賴 HTTPS 網域上的數位資產連結檔 (assetlinks.json),而 iOS Universal Links 則需要 Apple App Site Association (AASA) JSON 檔案,兩者均透過驗證網域所有權來繞過系統選擇器對話框。這種原生路由機制建立了網域與 App 的連結,並免除了傳統 URL Scheme 跳出視窗的阻礙,實現了 98.7% 的深層連結穩定性。

在行動成長與 App 開發領域,業界越來越將 App Links 視為 Android 深層路由流暢體驗的黃金標準。現代行動作業系統已淘汰原始且未經驗證的自訂重新導向協定,強迫開發者在網域與原生 App 之間建立加密驗證。若缺乏這些關聯性,使用者將會不斷被系統選擇器對話框打斷,這將大幅降低轉換率。

現實情況是:重新導向過程中的任何阻礙都會導致使用者流失。為了最佳化行動使用者旅程,技術團隊必須了解 Android 與 iOS 在底層驗證架構上的差異。


網域驗證時代:繞過選擇對話框的阻礙

在經過驗證的原生路由出現之前,行動平台依賴傳統的自訂協定。當使用者點擊網頁連結時,瀏覽器無法確認目標應用程式是真品還是惡意軟體。此安全漏洞導致不肖份子能透過註冊相同的自訂協定來劫持流量。

為了解決此問題,現代作業系統引入了自動網域驗證:

  • 消除選擇器對話框: 透過驗證網域所有權,作業系統會繞過「開啟方式…」瀏覽器選擇對話框。當點擊經過驗證的連結時,App 會立即啟動。
  • 加密關聯性: 兩大平台在安裝時都會查詢 App 網域上託管的安全 JSON 清單,建立受信任的關聯。
  • 沙盒隔離: 重新導向被封裝在已驗證的應用程式內,防止惡意第三方 App 攔截 Intent 參數。

事實上,正確實作這些設定需要嚴格遵守各平台不同的檔案格式與驗證流程。


設定關聯清單:Assetlinks JSON 與 AASA 規格

兩種深層路由協定的核心技術差異,在於其關聯清單的結構以及各自的託管要求。

Android Assetlinks JSON 協定:解析數位資產連結

Android App Links 要求在安全 HTTPS 網域的 .well-known 目錄中放置名為 assetlinks.json 的檔案。作業系統的套件管理程式會在 App 安裝時查詢此檔案,以驗證 App 的簽署憑證是否與網域宣告的資產連結相符。該檔案必須以 application/jsoncontent-type 標頭提供,且必須包含 App 的精確套件名稱以及其 SHA-256 指紋憑證。

請參考下方的標準結構來格式化您的 Android 資產驗證檔:

[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "namespace": "android_app",
      "package_name": "com.opoinstall.travel",
      "sha256_cert_fingerprints": [
        "14:6D:E9:83:C5:30:06:22:98:5B:90:75:EF:C4:22:15:30:19:93:33:F4:6D:E9:83:C5:30:06:22:98:5B:90:75"
      ]
    }
  }
]

assetlinks json 與 Apple App Site Association (AASA) 規格。

iOS AASA JSON 規格:格式化 Apple App Site Association

iOS Universal Links 依賴名為 apple-app-site-association (AASA) 的未簽署 JSON 檔案。與 Android 類似,此檔案必須存放在 .well-known 目錄中。

差異何在?不像 Android 透過 Google Play 服務即時驗證 App Links,iOS 是透過 Apple 的 CDN 代理伺服器來查詢網域。檔案結構定義了您的應用程式 ID (由 10 個字元的 Team ID 與 Bundle Identifier 組成) 以及觸發原生啟動的路徑萬用字元陣列。

請參考下方的結構標準來格式化您的 iOS 關聯檔:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "6E65F4E7IUX.com.opoinstall.travel",
        "paths": [
          "/booking/*",
          "/promo/*"
        ]
      }
    ]
  }
}

Apple Universal Links 與 Android App Links:協定與驗證比較

原生路由關聯與傳統 URL Scheme 對話框比較。

若要評估這些經過驗證的原生路由協定在作業系統限制下如何勝過傳統 URL Schemes,請分析下方的技術矩陣:

架構指標 Android App Links iOS Universal Links 自訂 URL Schemes (傳統)
驗證檔名 assetlinks.json (JSON 格式) apple-app-site-association (原始 JSON) 無 (無需伺服器端驗證檔)
驗證觸發點 於 App 安裝時由 Google Play 服務驗證。 於安裝時由 Apple 的全球 CDN 代理緩存與查詢。 無系統層級驗證;直接於 App 清單中註冊。
重新導向體驗 繞過系統對話框;點擊網頁連結後立即開啟 App。 直接開啟原生 App,無瀏覽器導向提示。 提示使用者「是否在 App 中開啟?」的瀏覽器對話框。
缺少 App 後備機制 優雅地退回至該網域的網頁瀏覽器渲染。 順暢地預設至 Safari 瀏覽器,渲染原始網頁。 完全失敗,觸發「位址無效」的瀏覽器彈出視窗。

部署 Opoinstall SDK 以自動化 Universal Links 與 App Links 路由

在數百個動態行銷活動中設定、驗證並維護 AASA 與 Assetlinks 清單是常見的工程痛點。整合統一的行動歸因 SDK 可透過自動化整個伺服器端託管架構來解決這些營運挑戰。

在開發者控制台註冊您的路由網域

您的整合始於在歸因儀表板中對應您的品牌網域。為了讓您的網頁登陸頁與原生 App 對齊,您可以參考官方的深層連結整合指南進行跨平台映射。SDK 會在全域 CDN 上自動生成、託管並對您的 AASA 與 assetlinks.json 檔案進行加密簽署,徹底免除人工維護伺服器檔案的負擔。

整合輕量級 SDK 框架

下一步需要將我們輕量級的一鍵啟動行動 SDK 框架整合至您的客戶端建置中。此非阻塞式函式庫會掛載至 App 的入口方法,以攔截進來的使用者活動。

為何這很重要?在底層機制中,系統的喚醒時序執行如下:

  1. 使用者點擊外部瀏覽器中的已驗證 HTTPS 行銷連結。
  2. 作業系統攔截 URL 請求,並查詢其本地註冊資料庫,以查看該網域是否與已安裝的 App 關聯。
  3. 若找到符合項目,OS 會完全繞過網頁容器,在幾毫秒內啟動 App。
  4. OS 將 URL 負載直接傳遞給 App Delegate 或啟動活動 (Launcher Activity)。
  5. 若 App 未安裝,OS 預設會以預設瀏覽器渲染網頁。

分析後備機制:URL Schemes 如何拯救未安裝 App 的使用者

當因為應用程式未安裝導致原生連結失效時,平台會自動退回至標準的網頁轉 App 重新導向。

在 Android 上,平台可繞過 Play Store 並提供直接下載 APK 的方式,利用標準的 Google Play Install Referrer API 來捕捉安裝負載。這確保了自訂參數 (如邀請者 ID 或行銷活動追蹤代碼) 能安全地傳遞至安裝屏障,即便在首次安裝時也能提供不中斷的推薦流程。


除錯 Android 12 驗證失敗:assetlinks 驗證案例研究

某大型旅遊 App 在進行標準系統更新時,QA 團隊回報在 Android 12 與 13 裝置上,促銷郵件中的深層連結失效,導致使用者被強迫選擇網頁瀏覽器而非啟動原生 App。

異常症狀:Android 12 中的瀏覽器選擇與對話框阻礙

在舊版裝置上,深層連結運作正常。然而,Android 12 引入了嚴格的驗證政策:若任何宣告的網域未能通過 assetlinks.json 的握手驗證,系統會停用清單中「所有」宣告網域的 App Links 功能,導致使用者旅程退回至惱人的瀏覽器選擇器對話框。

CLI 驗證指令與 Google 的驗證爬蟲檢查

工程團隊發起了技術稽核。首先,他們透過 Android Debug Bridge (ADB) 在目標裝置上執行了指令列授權檢查,以檢查套件的驗證狀態:

# 查詢本地套件管理程式以驗證 Android App Link 網域
$ adb shell pm get-app-links com.opoinstall.travel

指令列輸出回傳了 state: 1024 (unverified) 狀態。這證實了 Android 套件管理程式在安裝過程中拒絕了網域對應 App 的關聯。

Digital Asset Links JSON 對齊與 SSL 握手調整

開發者查詢了 Google 的數位資產連結驗證爬蟲以隔離錯誤。爬蟲日誌揭露了一個 TLS 握手逾時錯誤:網頁伺服器將 assetlinks.json 檔案託管在防火牆後方,該防火牆封鎖了 Google 自動化爬蟲的 IP。

此外,伺服器正在執行從 HTTP 連接埠到 HTTPS 的 301 重新導向。由於 Android 的 App Links 驗證系統嚴格禁止 HTTP 重新導向,因此自動握手失敗。

為了排除障礙,團隊設定網頁伺服器在 443 連接埠上直接回傳 HTTP 200 回應,並帶有 application/json 標頭,藉此繞過任何 HTTP 重新導向。

除錯 Android 12 App Links assetlinks 驗證。

遷移後效能稽核:達到 98.7% 的重新導向準確度

在重新安裝更新後的套件後,工程團隊再次執行了 ADB 驗證工具。該指令回傳了 verified 狀態。

SDK 即時攔截了深層連結 Intent,且未觸發選擇器對話框。跨平台的重新導向準確度回升至 98.7%,成功恢復了所有行銷活動使用者的流暢預訂體驗,並保障了客戶的行銷投資報酬率。



常見問題 (FAQ)

安全應用程式重新導向的未來:隱私優先的沙盒化深層連結

隨著行動作業系統不斷收緊隱私沙盒,深層連結環境必須持續進化。像 IDFA 這類傳統追蹤識別碼的廢除,意味著確定性的重新導向必須完全依賴安全的第一方網域關聯。能夠自動化 AASA 託管與簽章驗證的平台將變得至關重要。透過將您的路由基礎設施集中在安全且對開發者友善的 SDK 網路中,您可以在保護成長漏斗免受未來隱私變動影響的同時,為使用者提供流暢且安全的旅程。

Share this article