簡介
Universal Links(又稱App Links)是通過https鏈接來實(shí)現(xiàn)打開app并傳遞參數(shù)的一套機(jī)制,與之前的URL Scheme相比,具有更安全锭硼、功能更全面汇竭、兼容性更好等優(yōu)勢
iOS如何配置Universal Links
- 開啟項(xiàng)目的associated domains功能。開發(fā)者中心 → Certificates, Identifiers & Profiles → Identifiers → 相應(yīng)App Id的Capabilities → 勾選Associated Domains
- 在項(xiàng)目里配置applinks立磁,即本app支持的universal links域名。工程的Target → Signing & Capabilities → Associated Domains → +號(hào) → 輸入applinks:www.example.com
- 在以上域名的根目錄或者.well-known目錄下剥槐,放置一個(gè)名為apple-app-site-association的json文件唱歧,該文件里定義了要打開的url的規(guī)則
- 在AppDelegate中實(shí)現(xiàn)相應(yīng)的回調(diào)方法,
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) → Void)→ Bool
Universal Links工作流程和與URL Scheme的對比
Universal Links是一個(gè)四方的鑒權(quán)流程,包括調(diào)用者颅崩、我方app几于、apple、我方服務(wù)器沿后,和以前使用的URL Scheme相比沿彭,多出了apple和我方服務(wù)器的角色,來確保調(diào)用的規(guī)范和安全尖滚。
具體流程為:
- 安裝或者更新app時(shí)喉刘,apple會(huì)去我們配置的域名下載apple-app-site-association文件。該文件不直接配置在項(xiàng)目里漆弄,而是只配置域名然后apple去自行下載睦裳,可以確保apple-app-site-association文件不會(huì)被客戶端偽造。相比使用URL Scheme是可以隨便偽造的撼唾,為了保證安全廉邑,一般都得自己再加一個(gè)接口簽名
- 某個(gè)app或者網(wǎng)頁嘗試打開https鏈接時(shí),apple檢查該URL的域名是否匹配我方app申明的applinks倒谷,如果是蛛蒙,再去匹配apple-app-site-association中定義的appID和paths,如果可以匹配會(huì)調(diào)起app渤愁,否則通過safari打開該鏈接牵祟。我們可以為該鏈接配置H5頁面來提示引導(dǎo)用戶下載我們的app。相比使用URL Scheme猴伶,如果用戶沒有安裝我們的app课舍,我們將無法做任何后續(xù)的引導(dǎo)
- 在回調(diào)方法中,從
userActivity.webpageURL
拿到調(diào)起我們app URL他挎,通過其path或者parameters來處理后續(xù)的業(yè)務(wù)
Universal Links無法打開app筝尾?
檢查以下check list
- apple-app-site-association文件不要帶json或者其他任何后綴
- 去域名根目錄或者.well-known看是否能下載到apple-app-site-association
- apple-app-site-association必須是合法的json
- apple-app-site-association中的appID要帶team id的前綴,paths前面要帶/
- 項(xiàng)目里配置的applinks办桨,只能包括域名筹淫,不要在后面加path。如果要支持多個(gè)配置呢撞,可以使用多個(gè)域名或者子域损姜;也可以在apple-app-site-association文件中通過path進(jìn)行區(qū)分
- h5喚起Universal Links必須要跨域,在app嘗試的時(shí)候殊霞,可以使用"Notes"摧阅,編輯鏈接后點(diǎn)擊看是否有 Open in “XXX” 的選項(xiàng)
- 一般情況下,Entitlements File會(huì)自動(dòng)生成并配置好applinks绷蹲,但是還是應(yīng)該檢查一下文件內(nèi)容和路徑
- 嘗試卸載安裝app棒卷,蘋果在安裝app時(shí)會(huì)去下載apple-app-site-association