Try   HackMD

Deep Link 深度連結

簡介

在一般網頁裡,深度連結就是說這個連結不僅只是打開一個網站 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(延遲性深度連結)就是當使用者透過一個特定的產品連結,點擊後進入該網頁,但該網頁可以引導使用者安裝應用程式,在安裝完程式後,照樣可以接續剛剛看過的商品,不讓整個體驗中斷

缺點

必須註冊URL Scheme,而這個註冊事實上是有和別人衝突的風險,加上一但Deferred Deep Link實作不完全,也容易有失效連結的問題

因此為解決以上問題,蘋果和安卓都有了自己的第二套解決方案,分別是 iOS 的 Universal Link,和 Android 的 App 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的右側會出現一個通過網站打開的按鈕選項。如圖:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

因此,一旦用戶點擊了這個選項,他就會通過safiri打開你的網站。並且在之後的操作中,默認一直延續這個選擇,除非用戶從你的webpage上通過點擊Smart App Banner上的OPEN按鈕來打開。也就是說,用戶非常容易在一次選擇之後,使得Universal link喚醒app的功能失效了。

版本

適用於 Android 6.0 之後的版本

簡介

同 ios 的 Universal Link
無須再透過彈跳視窗選擇開啟應用程式

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

參考資料:
理解Deep Link & URI Schemes & Universal Link & App Link
點擊網頁廣告就打開APP? 淺談手機APP的深度連結Deep Link的演進(Universal Link)
Universal links on iOS vs. deep links (URL schemes)

Line

Using the LINE URL scheme

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]