MobLink | URL Scheme和Universal Link的區別
一.簡介蘋果的沙盒機制
一般來說,我們使用的智慧裝置上有許多我們的個人資訊。比如:聯絡方式、銀行卡/信用卡資訊、支付寶/Paypal/各大商城的賬戶密碼、照片甚至行程與位置資訊等等。
如果說,你裝置上的每一個應用,不管是官方的還是你從任何商城安裝的應用都可以隨意地獲取這些資訊,那麼你輕則收到騷擾資訊和郵件、重則後果不堪設想。如何讓這些資訊不被其它應用隨意使用,或者說,如何讓這些資訊僅在裝置所有者本人知情並允許的情況下被使用,是所有智慧裝置與作業系統所要在乎的核心安全問題。
在 iOS 這個作業系統中,針對這個問題,蘋果使用了名為「沙盒」的機制:應用只能訪問它宣告可能訪問的資源。一切提交到 App Store 的應用都必須遵守這個機制。
蘋果選擇沙盒來保障使用者的隱私和安全,但沙盒也阻礙了應用間合理的資訊共享,於是有了 URL Schemes 這個解決辦法。
二.簡介URL Scheme
1.URL Scheme是什麼?
通過對比網頁連結來理解 iOS 上的 URL Scheme,應該就容易多了。
URL Scheme 有兩個單詞:
URL,我們都很清楚,例如 http://www.apple.com 就是個 URL,我們也叫它連結或網址;
Scheme,表示的是一個 URL 中的一個位置——最初始的位置,即 ://之前的那段字元。比如 http://www.apple.com 這個網址的 Scheme 是 http。
根據我們上面對 URL Scheme 的使用,我們可以很輕易地理解,在以本地應用為主的 iOS 上,我們可以像定位一個網頁一樣,用一種特殊的 URL 來定位一個應用甚至應用裡某個具體的功能。而定位這個應用的,就應該這個應用的 URL 的 Scheme 部分,也就是開頭那部分。比如簡訊,就是 sms:
2.如何配置URL Scheme?
專案中需要配置 URL Scheme 以用於場景恢復時跳轉到應用中(這裡的scheme要唯一確定,不要與其他應用一致,建議使用專案名稱作為scheme,不然有可能會跳轉到其他的應用裡)。
在iOS工程中選擇工程 Target,選擇 Info 選項,然後開啟 URL Types,新增 URL Scheme。可以自定義協議名稱,如moblink。這個形式的 URI 就會關聯跳轉到工程中。
三.簡介Universal Link
1.Universal Link 是什麼?
Universal Link 是 Apple 在 WWDC 2015 上為 iOS 9 引入的一個新功能,是通過傳統HTTP連結來啟動App的新技術。可以使用相同的網址開啟網站和App。
通過唯一的網址,就可以連結到App中具體的檢視,不需要特殊的Scheme。如果使用者沒有安裝App則連結到對應的普通網頁。
2.如何配置 Universal Link ?
在蘋果開發者網站中開啟需要使用 Universal Link 功能的App中的Associated Domains開關
然後上傳一個名為 “apple-app-site-association” 的檔案到伺服器根目錄下,該檔案內容格式如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
其中 “appID” 是由開發者的 TeamID 和App的 BundleID 拼接而成,“paths” 陣列可用來指定該URL下的哪些路徑被註冊成為Universal Link。相關詳細說明請參考:Support Universal Links
最後在AppDelegate中實現相應的代理方法即可。
四.URL Scheme和Universal Link區別
在 iOS 9 以前,我們從外部啟動App都是通過URL Scheme實現跳轉的。這種方式雖然可自定義程度很高,能夠巧妙地實現很多跳轉,但弊端也很明顯:我們只能通過 scheme://example 這種格式的連結來實現跳轉,而且現在蘋果還對這種方式的跳轉加了一個提示框:“是否開啟XXX”。對於對Web和原生App互動的場景需求量很大的產品來說,這樣的跳轉方式顯然是步驟冗雜的,使用者體驗並不好。
iOS 9 以後,Universal Link 的出現完美的解決了這個問題。它所提供的直接、順暢、無縫銜接的跳轉能夠讓使用者體驗提升一個很大的級別。使用者可以點選開發者指定的類似於 https://example.com/t 的URL直接喚醒App,而不需要在瀏覽器開啟再點選其他按鈕,實現真正意義上的一鍵直達,無縫連結。