前言
由于對(duì)接微信分享的時(shí)候發(fā)現(xiàn)微信的SDK 1.8.6需要支持Universal Links,于是查看官網(wǎng)以及各個(gè)博客資源
結(jié)合自身實(shí)際操作,記錄在案
文檔&資料
1、Support Universal Links - 支持通用鏈接
這份文檔講的比較詳細(xì),說到了很重要的一點(diǎn),下面具體操作會(huì)提到
NOTE
Don’t append.jsonto theapple-app-site-associationfilename.
2、Supporting Associated Domains in Your App
這份文檔仔細(xì)講了2種(iOS12以后、iOS12以前)apple-app-site-association文件的寫法,按需參考
3、蘋果官方驗(yàn)證網(wǎng)址
配置好后可以在這個(gè)網(wǎng)頁(yè)里面驗(yàn)證是否配置成功
操作
這里以xcode11為例
1、在工程中添加 Associated Domains

Domains的配置以
applinks:開頭,后面寫你放置apple-app-site-association文件的域名,到根目錄即可
2、登錄蘋果開發(fā)者后臺(tái),在你的 APPID 中支持 Associated Domains,并更新 Profile 文件
3、配置 apple-app-site-association 文件
配置方式可以參照上面文檔1和文檔2
創(chuàng)建一個(gè)名為apple-app-site-association的json文件
{
"applinks": {
"apps": [],
"details": [{
"appID": "你的TeamID.你的Bundle ID",
"paths": ["*"]
}]
}
}
apps后面的數(shù)組為空就好,主要內(nèi)容配置在details里面
包含:appID和paths
這里著重講一下paths:
path是設(shè)定你的app支持的路徑列表,只有訪問到域名下對(duì)應(yīng)path的地址才會(huì)喚起APP。
其中可以使用通配符*或者/app/*
具體路徑地址/app/home
還可以忽略某種規(guī)則NOT /help/website/*
劃重點(diǎn):填寫完畢后保存,并且將文件.json后綴刪掉,沒錯(cuò),刪掉,會(huì)變成一個(gè)不能正常打開的文件
4、上傳apple-app-site-association到你的服務(wù)器根目錄或者.well-known目錄
上傳完后,先訪問一下,看看是否能夠獲取到,當(dāng)你在瀏覽器中輸入這個(gè)文件鏈接后,應(yīng)該是直接下載apple-app-site-association文件
同時(shí)可以訪問蘋果官方驗(yàn)證,來校驗(yàn)?zāi)阄募欠裾_上傳

Error no apps with domain entitlements 是因?yàn)檫€沒有發(fā)布
5、以上做完之后可以安裝APP到手機(jī)上
用Safari訪問你的服務(wù)器域名+你的path
https://域名/path/
下拉查看是否有打開APP入口(如下圖)。若無入口,可能是由于系統(tǒng)拉取Universal Links失敗,請(qǐng)檢查手機(jī)網(wǎng)絡(luò)狀態(tài)是否正常,或更新/重裝APP。

系統(tǒng)只會(huì)在第一次安裝/啟動(dòng)APP的時(shí)候去拉取Universal Links
6、到這里基本算配置成功了,如果還想美化一下目標(biāo)頁(yè)面的話,可以參考這兩篇文檔(純英文)
這兩個(gè)都是通過配置meta來調(diào)整頭部標(biāo)簽的,有興趣可以了解一下
配置WebPage的方式
The Open Graph protocol
需要注意的幾點(diǎn)
原文出處:https://blog.csdn.net/gsl111000/article/details/102937698
1、Universal Link跨域
Universal Link有跨域問題,Universal Link必須要求跨域,如果不跨域,就不會(huì)跳轉(zhuǎn)(iOS 9.2之后的改動(dòng))
假如當(dāng)前網(wǎng)頁(yè)的域名是A,當(dāng)前網(wǎng)頁(yè)發(fā)起跳轉(zhuǎn)的域名是B,必須要求B和A是不同域名才會(huì)觸發(fā)Universal Link,如果B和A是相同域名,只會(huì)繼續(xù)在當(dāng)前WebView里面進(jìn)行跳轉(zhuǎn),哪怕你的Universal Link一切正常,根本不會(huì)打開App
2、Universal Link請(qǐng)求apple-app-site-association時(shí)機(jī)
當(dāng)我們的App在設(shè)備上第一次運(yùn)行時(shí),如果支持Associated Domains功能,那么iOS會(huì)自動(dòng)去GET定義的Domain下的apple-app-site-association文件
iOS會(huì)先請(qǐng)求https://domain.com/.well-known/apple-app-site-association,如果此文件請(qǐng)求不到,再去請(qǐng)求https://domain.com/apple-app-site-association,所以如果想要避免服務(wù)器接收過多GET請(qǐng)求,可以直接把a(bǔ)pple-app-site-association放在./well-known目錄下
服務(wù)器上apple-app-site-association的更新不會(huì)讓iOS本地的apple-app-site-association同步更新,即iOS只會(huì)在App第一次啟動(dòng)時(shí)請(qǐng)求一次,以后除非App更新或重新安裝,否則不會(huì)在每次打開時(shí)請(qǐng)求apple-app-site-association
記錄一個(gè)小問題
集成微信1.8.6.2版本的微信分享SDK時(shí),引入工程發(fā)現(xiàn)根據(jù)官方文檔配置的依賴仍然缺少,編譯報(bào)錯(cuò)
需要添加libc++.tbd
或者將工程支持c++編譯,把其中一個(gè)文件后綴改為.mm即可
QQ分享的校驗(yàn)
QQ也發(fā)布了關(guān)于Universal Link的支持與適配
官方文檔教你如何配置
看過之前的講解之后,這里簡(jiǎn)單陳述一下
由于qq對(duì)于path有一定的要求,apple-app-site-association文件需要我們單獨(dú)按照qq的配置
{
"appID": "EB333MN775.com.hundsun.InternetSellTicket.appstore",
"paths": [
...
"/qq_conn/${你的qq應(yīng)用APPId}/*"
]
}
然后去開放平臺(tái)維護(hù)一下相關(guān)信息,校驗(yàn)通過之后就可以了