1.Universal Link 的基本運(yùn)作機(jī)制:
- 通過(guò)在 XCode 的 App 配置中配置了相關(guān)信息以及安全域名指定
- 通過(guò)在 Https only 的安全域名上部署一個(gè)配置 apple-app-site-association file
- file 中配置上豐富的 website 與 app 的鏈接信息
- 在 website 與 app之間建立起了安全有效的握手機(jī)制
- 實(shí)現(xiàn) website 的 url 與 app 的直接聯(lián)動(dòng)
2.apple-app-site-association 的配置
首先放上官網(wǎng)文檔的地址:Support Universal Links
(1)創(chuàng)建 apple-app-site-association 文件(文件名稱不能更改)
在本地創(chuàng)建json文件,文件內(nèi)容
{
"applinks": {
"apps": [],
"details": [{
"appID": "2QTWJE35GG.com.text.mine",
"paths": ["/sht/*"]
}]
}
}
apps:為必寫且固定為[]
appID:TeamID + '.' + BundleID
比如我項(xiàng)目的
teamID為2QTWJE35GG;
BundleID為com.text.mine,
最后appID為2QTWJE35GG.com.text.mine
paths:是一個(gè)字符串?dāng)?shù)組,對(duì)應(yīng)域名中的path,用于過(guò)濾可以跳轉(zhuǎn)到App的鏈接,支持通配符*,?以及NOT進(jìn)行匹配。
details數(shù)組中可以配置多個(gè)APP的信息,如果公司內(nèi)有多個(gè)APP需要支持Universal,則可以直接添加多個(gè)。
(2)將配置好的apple-app-site-association文件上傳到服務(wù)器
apple-app-site-association文件需要上傳到服務(wù)器的根目錄下 ,也可以在根目錄中添加.well-known文件夾,將文件上傳到.well-known文件夾下(.點(diǎn)一定不能少),對(duì)應(yīng)連接分別為
https://xxx/apple-app-site-association
https://xxx/.well-known/apple-app-site-association
xxx為你服務(wù)端的域名
注意:上傳apple-app-site-association文件時(shí),一定要先帶文件后綴一起上傳(即原文件,不要強(qiáng)制去掉后綴),然后在服務(wù)端重定向一個(gè)沒(méi)有后綴的鏈接(如上面鏈接所示,否則通過(guò)不了 ,這里卡了一上午)。
蘋果提供了一個(gè)網(wǎng)頁(yè)來(lái)驗(yàn)證我們編寫的這個(gè)apple-app-site-association文件是否合法有效,進(jìn)入驗(yàn)證網(wǎng)址進(jìn)行驗(yàn)證:

出現(xiàn) Error no apps associated with url 則表明驗(yàn)證通過(guò)
(3)配置開(kāi)發(fā)者證書
進(jìn)入開(kāi)發(fā)者網(wǎng)站,找到對(duì)應(yīng)ID,開(kāi)通Associated Domains,更新對(duì)應(yīng)描述文件

(4)項(xiàng)目配置
在TARGETS的Capablities中開(kāi)啟Associated domains

Domains配置的內(nèi)容為applinks: + 域名(即步驟二中的xxx)
比如:applinks:aliyun.sht.com
實(shí)現(xiàn)喚醒代理
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
NSLog(@"userActivity : %@",userActivity.webpageURL.description);
return YES;
}
驗(yàn)證配置
先運(yùn)行項(xiàng)目,然后
在Safari中輸入https://xxxxx/path,path是apple-app-site-association文件中配置的,下拉后出現(xiàn)類似下面的頁(yè)面,則表示成功

注意事項(xiàng):
1:必須支持https
2:apple-app-site-association名稱不能變
3:文件位置只有上面說(shuō)的兩個(gè)地方
4:teamId和bundleID要正確
5:IOS9以上