MobLink | URL Scheme和Universal Link區別
一.簡介蘋果的沙盒機制
一般來說,我們使用的智能設備上有許多我們的個人信息。比如:聯系方式、銀行卡/信用卡信息、支付寶/Paypal/各大商城的賬戶密碼、照片甚至行程與位置信息等。
如果說,你設備上的每一個應用,不管是官方的還是你從任何商城安裝的應用都可以隨意地獲取這些信息,那么你輕則收到騷擾信息和郵件、重則后果不堪設想。如何讓這些信息不被其它應用隨意使用,或者說,如何讓這些信息僅在設備所有者本人知情并允許的情況下被使用,是所有智能設備與操作系統所要在乎的核心安全問題。
在 iOS 這個操作系統中,針對這個問題,蘋果使用了名為「沙盒」的機制:應用只能訪問它聲明可能訪問的資源。一切提交到 App Store 的應用都必須遵守這個機制。
蘋果選擇沙盒來保障用戶的隱私和安全,但沙盒也阻礙了應用間合理的信息共享,于是有了 URL Schemes 這個解決辦法。
二.簡介URL Scheme
1.URL Scheme是什么?
通過對比網頁鏈接來理解 iOS 上的 URL Schemes,應該就容易多了。
URL Schemes 有兩個單詞:
URL,我們都很清楚,http://www.apple.com 就是個 URL,我們也叫它鏈接或網址;
Schemes,表示的是一個 URL 中的一個位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com 這個網址的 Schemes 是 http。
根據我們上面對 URL Schemes 的使用,我們可以很輕易地理解,在以本地應用為主的 iOS 上,我們可以像定位一個網頁一樣,用一種特殊的 URL 來定位一個應用甚至應用里某個具體的功能。而定位這個應用的,就應該這個應用的 URL 的 Schemes 部分,也就是開頭兒那部分。比如短信,就是 sms:
2.如何配置URL Scheme?
項目中需要配置URL Scheme以用于場景恢復時跳轉到應用中(這里的scheme要唯一確定,不要與其他應用一致,建議使用項目名稱作為scheme,不然有可能會跳轉到其他的應用里)。
在iOS工程中選擇工程Target,選擇Info選項,然后打開URL Types,添加URL Scheme。可以自定義協議名稱,如moblink。這個形式的 URI 就會關聯跳轉到工程中。
三.簡介Universal Link
Universal Link是Apple在WWDC2015上為IOS9引入的一個新功能,是通過傳統HTTP鏈接來啟動App的技術。可以使用相同的網址打開網站和App。
通過唯一的網址,就可以鏈接到App中具體的視圖,不需要特殊的schema。如果用戶沒有安裝App則鏈接到對應的普通網頁。
如何添加這個功能:
在蘋果開發者網站中打開需要使用Universal Link功能的App中的Associated Domains
上傳apple-app-site-association到服務器根目錄下
在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,而不需要在瀏覽器打開再點擊其他按鈕。