# Deep Link 深度連結 ###### tags: `deeplink` `android` `ios` ## 簡介 在一般網頁裡,深度連結就是說這個連結不僅只是打開一個網站 http://example.com/ ,而是直接地打開這個網站中的某個具體內容頁面 http://example.com/my-awesome-content-page 在行動裝置中,透過點擊一個定義好並註冊的 Customer URL Schema(例如:instagram://),就能開啟 APP ## URL Scheme 第一代實現 deep link 的方法 ### URI、URL、URN * URI : universal resource identifier * URL : universal resource locator * URN : universal resource name ### URL v.s URN? URL包含了找到資源的方法(路徑)和資源名稱,也就是當一個URI包含了一個訪問機制或者網絡位置的時候(e.g. http// or ftp://),它就是一個URL了。 URN就是一個獨一無二的資源名稱,它是由urn開頭的一串URI。 e.g. urn:oasis:names:specification:docbook:dtd:xml:4.1.2 所以說,它們之間重要的區別就在於它的開頭,也就是Scheme. 利用它就可以在行動裝置中實現從 web 頁面或者別的 app 中喚起自己的app的功能 ### 限制 * 註冊 URL Scheme 時會有和別人衝突的風險 * 當要被喚起的app沒有安裝時,這個鏈接就會出錯 ## Deferred Deep Link ### 簡介 Deferred Deep Link(延遲性深度連結)就是當使用者透過一個特定的產品連結,點擊後進入該網頁,但該網頁可以引導使用者安裝應用程式,在安裝完程式後,照樣可以接續剛剛看過的商品,不讓整個體驗中斷 ### 缺點 必須註冊URL Scheme,而這個註冊事實上是有和別人衝突的風險,加上一但Deferred Deep Link實作不完全,也容易有失效連結的問題 因此為解決以上問題,蘋果和安卓都有了自己的第二套解決方案,分別是 iOS 的 Universal Link,和 Android 的 App Link ## Universal Link ### 版本 適用於 iOS 9.0 之後的版本 ## 簡介 擺脫過去定義URL Schema 的限制,反而是定義好Web與APP之間的呼應與連結,讓使用者可以利用HTTP/HTTPS連結,直接開啟APP進入內文頁 不是只定義一個custom URL scheme,而是匹配了多個web頁面到app中相應的位置,當用戶打開某個匹配的頁面時,iOS會自動地將其重定向到app內。 ### 優點 1. 當已經安裝了這個app的時候,不需要加載任何web頁面,app就會立即啟動;當這個app沒有安裝的時候,就會默認地從當前瀏覽器中重定向到App Store中引導用戶去下載安裝這個app。 2. Universal links是從服務器上查詢是哪個app需要被打開,因此不存在Custom URL scheme那樣名字被搶佔、衝突的情況。 3. Universal links支持從其他app中的UIWebView中跳轉到目標app 4. 安全性,用universl link去打開的時候,只有你(開發這個app的人)可以通過創建和上傳一個允許這個網頁去通過這個URL去打開你的app的文件。 5. 隱私性,提供Universal link給別的app進行app間的交流,然而對方並不能夠用這個方法去檢測你的app是否被安裝。(之前的custom scheme URL的canOpenURL方法可以,具體可以看這裡iOS Review-DetectScheme。) ### 缺點 在用戶點擊了Universal link之後,iOS會去檢測用戶最近一次是選擇了直接打開app還是打開網站。這個選擇的步驟,實際上是在用戶進入了app之後,頂部bar的右側會出現一個通過網站打開的按鈕選項。如圖:  因此,一旦用戶點擊了這個選項,他就會通過safiri打開你的網站。並且在之後的操作中,默認一直延續這個選擇,除非用戶從你的webpage上通過點擊Smart App Banner上的OPEN按鈕來打開。也就是說,用戶非常容易在一次選擇之後,使得Universal link喚醒app的功能失效了。 ## App Link ### 版本 適用於 Android 6.0 之後的版本 ### 簡介 同 ios 的 Universal Link 無須再透過彈跳視窗選擇開啟應用程式  > 參考資料: > [理解Deep Link & URI Schemes & Universal Link & App Link](https://www.jianshu.com/p/909999e398e6) > [點擊網頁廣告就打開APP? 淺談手機APP的深度連結Deep Link的演進(Universal Link)](https://progressbar.tw/posts/264) > [Universal links on iOS vs. deep links (URL schemes)](https://stackoverflow.com/questions/35522618/universal-links-on-ios-vs-deep-links-url-schemes) ## Line [Using the LINE URL scheme](https://developers.line.biz/en/docs/messaging-api/using-line-url-scheme/#operating-environment) ### iOS 使用 `line://` 直接開啟 line ### Android 使用 `https://line.me/R/` 會有一個中繼跳轉畫面 ## FB ### iOS 使用 `fb://profile` ### Android 使用 `fb://facewebmodal/f?href=FACEBOOKURL` 參考資料: [Open Facebook Page in Facebook App (if installed) on Android [duplicate]](https://stackoverflow.com/questions/34564211/open-facebook-page-in-facebook-app-if-installed-on-android/34564284)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.