Deep Link(深層連結)是一種可以直接打開 App 內特定頁面的連結。一般連結只能把使用者帶到網站,Deep Link 則能跳過 App 首頁,直接進到某件商品、某篇文章或某張訂單。行銷活動、LINE 推播、Email 與簡訊裡常見的「點了直接開 App」,背後就是 Deep Link。
Deep Link 本身是統稱,實作上有三種主要形式,差異在於「使用者沒安裝 App 時會發生什麼事」與安全性。以下依序說明三種做法、驗證設定、延遲深層連結,以及在 LINE 等內建瀏覽器中常見的失效問題。
沒有 Deep Link 時,行銷連結只能導到 App Store 或 App 首頁,使用者得自己再找一次想看的內容,中途流失的比例很高。有了 Deep Link,同一個連結可以依情境把人送到正確的位置:
已安裝 App:直接開啟 App 並跳到指定頁面,例如商品頁或優惠券頁。
尚未安裝:開啟對應的網頁,或引導到商店下載,安裝後再回到原本想看的內容。
用桌機開啟:顯示網頁版內容,不會出現無法開啟的錯誤。
常見應用包括:推播通知點擊後直達訂單頁、會員邀請連結、分享商品給朋友、Email 內的重設密碼連結,以及廣告投放後追蹤實際的安裝與轉換。
最早期的做法,由 App 註冊一個自訂協定,例如 myshop://product/123。實作簡單,但有兩個明顯缺點:使用者沒安裝 App 時,連結會直接失效或跳出錯誤;任何 App 都能註冊同名的 scheme,存在被其他 App 攔截的風險。現在多半只作為備援或 App 內部導頁使用。
Apple 自 iOS 9 起提供的做法,使用一般的 https:// 網址。已安裝 App 時由系統直接開啟 App;未安裝時則當作一般網頁開啟。因為必須證明網域與 App 屬於同一個擁有者,其他 App 無法冒用,安全性比 URI Scheme 高。
Android 6.0 起對應 Universal Link 的機制,同樣使用 https 網址並驗證網域。驗證通過後,點擊連結會直接開啟 App,不會再跳出「要用哪個 App 開啟」的選擇視窗。
實務上,新專案建議以 Universal Link 與 App Link 為主,URI Scheme 只保留給特殊情境。
這兩種連結都需要「App 端」與「網站端」同時設定,缺任何一邊都不會生效,這也是上線後最常出問題的地方。
iOS 需要在網域的 /.well-known/apple-app-site-association 放一份 JSON 檔(沒有副檔名),宣告哪些路徑要交給哪個 App 開啟。Android 則是 /.well-known/assetlinks.json,內容包含 App 的套件名稱與簽章憑證指紋。兩份檔案都必須透過 HTTPS 直接提供,不能經過轉址。
iOS 要在 Associated Domains 設定中加入 applinks:網域名稱;Android 要在 AndroidManifest 的 intent-filter 加上 autoVerify="true" 與對應的網址規則。App 收到連結後,還要自行解析路徑並導向正確的畫面。
驗證檔案被網站的轉址規則導走、CDN 回傳錯誤的 Content-Type、Android 簽章指紋填成除錯版而非正式版、測試與正式環境共用同一組網域設定,這幾項是 Deep Link「本機測試正常、上線後失效」的主要原因。
Universal Link 與 App Link 解決了「沒裝 App 時開網頁」的問題,但無法處理另一個常見需求:使用者先去商店下載,安裝完第一次打開 App 時,仍然跳到原本想看的那一頁。這種做法稱為 Deferred Deep Link(延遲深層連結)。
它的困難在於,從點擊連結到安裝完成之間,App 還不存在,無法直接帶參數進去。常見做法是在點擊時記錄來源資訊,App 首次啟動時再向伺服器比對並取回目標頁面。這一段牽涉裝置比對與隱私規範,自行開發的成本不低,多數團隊會使用 Branch、AppsFlyer、Adjust 等第三方服務。
值得注意的是,過去被大量採用的 Firebase Dynamic Links 已於 2025 年 8 月停止服務。仍在使用的 App 需要改用其他方案,否則既有的連結會失效。
這是台灣企業最常遇到的問題。LINE、Facebook、Instagram 點開連結時,預設使用 App 內建的瀏覽器(In-app Browser),而內建瀏覽器對跳轉到其他 App 有不少限制:傳統 URI Scheme 常被直接擋下,Universal Link 在部分情境下也不會觸發,結果使用者只看到網頁,或畫面停住沒有反應。
比較穩定的處理方式有三種:以 Universal Link/App Link 取代 URI Scheme;在落地網頁偵測是否位於內建瀏覽器,並提示使用者改用外部瀏覽器開啟;LINE 分享的連結可加上 openExternalBrowser=1 參數,直接以外部瀏覽器開啟。內建瀏覽器造成的其他問題,可參考App 內建瀏覽器問題完整解析。
Deep Link 的價值不只是方便,也是量測行銷成效的基礎。在連結上加入 UTM 參數,搭配 GA4 可以看到不同活動帶來的開啟數;若需要追蹤「點擊、安裝、首次開啟到下單」的完整路徑,就需要具備裝機歸因功能的服務。
規劃時建議先定義要追蹤的事件與命名規則,再決定是否需要第三方服務。只做 App 內導頁與分享,自建 Universal Link/App Link 通常就足夠;需要跨平台統一管理連結、延遲深層連結與廣告歸因時,第三方服務能省下大量開發與維護成本。
Deep Link 最好在 App 規劃初期就納入,而不是上線後才補。畫面路由若一開始沒有依「可被外部連結開啟」來設計,後續常需要大幅調整導頁邏輯。建議事先整理:哪些頁面需要能被直接開啟、需要帶哪些參數、未登入時要先登入再跳轉還是直接顯示、各環境使用哪個網域。
React Native、Flutter 等跨平台框架都有成熟的 Deep Link 套件,但網站端的驗證檔與正式環境設定仍需要逐一確認。App 的整體規劃與上架流程,可參考跨平台 APP 開發。
Q1. Deep Link 和 Universal Link 差在哪?
Deep Link 是統稱。傳統 URI Scheme 在未安裝 App 時會失效,也可能與其他 App 衝突;Universal Link(iOS)與 App Link(Android)使用 https 網址,已安裝就開啟 App、未安裝就開啟網頁,體驗與安全性都更好。
Q2. 使用者沒安裝 App,點 Deep Link 會怎樣?
使用 Universal Link/App Link 會開啟對應的網頁。若希望使用者安裝後第一次開啟仍跳到指定頁面,需要 Deferred Deep Link,通常搭配 Branch、AppsFlyer 等服務實作。
Q3. Deep Link 在 LINE 裡點不開是什麼原因?
LINE 內建瀏覽器常擋下傳統 URI Scheme,Universal Link 在部分情境下也不會觸發。建議改用 Universal Link/App Link,並在連結加上 openExternalBrowser=1 參數,或引導使用者以外部瀏覽器開啟。
Q4. Deep Link 需要網站端設定嗎?
需要。Universal Link 與 App Link 必須在網域的 /.well-known/ 路徑放置 apple-app-site-association 與 assetlinks.json 驗證檔,證明網域與 App 屬於同一個擁有者。
Q5. 什麼是 Deferred Deep Link?
延遲深層連結。讓尚未安裝 App 的使用者下載安裝後,第一次開啟就自動跳到原本想看的頁面,是廣告導流與裝機歸因的關鍵功能。
Q6. Firebase Dynamic Links 還能用嗎?
不能。Firebase Dynamic Links 已於 2025 年 8 月停止服務,仍在使用的 App 需要改用自建的 Universal Link/App Link,或改用其他第三方深層連結服務。
Q7. Deep Link 可以追蹤行銷成效嗎?
可以。連結加上 UTM 參數後可在 GA4 追蹤開啟來源;若要追蹤從點擊、安裝到轉換的完整路徑,需要具備裝機歸因功能的服務。
Q8. 一定要用第三方服務嗎?
不一定。基本的 Universal Link/App Link 可以自建;需要 Deferred Deep Link、跨平台統一管理連結與裝機歸因時,第三方服務能省下大量開發成本。