前言
由于對接微信分享的時候發(fā)現(xiàn)微信的SDK 1.8.6需要支持Universal Links,于是查看官網(wǎng)以及各個博客資源
結(jié)合自身實際操作,記錄在案
文檔&資料
1、Support Universal Links - 支持通用鏈接
這份文檔講的比較詳細(xì),說到了很重要的一點,下面具體操作會提到
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、蘋果官方驗證網(wǎng)址
配置好后可以在這個網(wǎng)頁里面驗證是否配置成功
操作
這里以xcode11為例
1、在工程中添加 Associated Domains

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

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

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