前言
由于對接微信分享的時候發現微信的SDK 1.8.6需要支持Universal Links,于是查看官網以及各個博客資源
結合自身實際操作,記錄在案
文檔&資料
1、Support Universal Links - 支持通用鏈接
這份文檔講的比較詳細,說到了很重要的一點,下面具體操作會提到
NOTE
Don’t append.json
to theapple-app-site-association
filename.
2、Supporting Associated Domains in Your App
這份文檔仔細講了2種(iOS12以后、iOS12以前)apple-app-site-association
文件的寫法,按需參考
3、蘋果官方驗證網址
配置好后可以在這個網頁里面驗證是否配置成功
操作
這里以xcode11為例
1、在工程中添加 Associated Domains
Domains的配置以
applinks:
開頭,后面寫你放置apple-app-site-association
文件的域名,到根目錄即可
2、登錄蘋果開發者后臺,在你的 APPID 中支持 Associated Domains,并更新 Profile 文件
3、配置 apple-app-site-association 文件
配置方式可以參照上面文檔1
和文檔2
創建一個名為apple-app-site-association的json文件
{
"applinks": {
"apps": [],
"details": [{
"appID": "你的TeamID.你的Bundle ID",
"paths": ["*"]
}]
}
}
apps
后面的數組為空就好,主要內容配置在details
里面
包含:appID
和paths
這里著重講一下paths
:
path
是設定你的app支持的路徑列表,只有訪問到域名下對應path的地址才會喚起APP。
其中可以使用通配符*
或者/app/*
具體路徑地址/app/home
還可以忽略某種規則NOT /help/website/*
劃重點:填寫完畢后保存,并且將文件.json
后綴刪掉,沒錯,刪掉,會變成一個不能正常打開的文件
4、上傳apple-app-site-association到你的服務器根目錄或者.well-known目錄
上傳完后,先訪問一下,看看是否能夠獲取到,當你在瀏覽器中輸入這個文件鏈接后,應該是直接下載apple-app-site-association文件
同時可以訪問蘋果官方驗證,來校驗你文件是否正確上傳
Error no apps with domain entitlements
是因為還沒有發布
5、以上做完之后可以安裝APP到手機上
用Safari訪問你的服務器域名
+你的path
https://域名/path/
下拉查看是否有打開APP入口(如下圖)。若無入口,可能是由于系統拉取Universal Links失敗,請檢查手機網絡狀態是否正常,或更新/重裝APP。
系統只會在第一次安裝/啟動APP的時候去拉取Universal Links
6、到這里基本算配置成功了,如果還想美化一下目標頁面的話,可以參考這兩篇文檔(純英文)
這兩個都是通過配置meta
來調整頭部標簽的,有興趣可以了解一下
配置WebPage的方式
The Open Graph protocol
需要注意的幾點
原文出處:https://blog.csdn.net/gsl111000/article/details/102937698
1、Universal Link跨域
Universal Link有跨域問題,Universal Link必須要求跨域,如果不跨域,就不會跳轉(iOS 9.2之后的改動)
假如當前網頁的域名是A,當前網頁發起跳轉的域名是B,必須要求B和A是不同域名才會觸發Universal Link,如果B和A是相同域名,只會繼續在當前WebView里面進行跳轉,哪怕你的Universal Link一切正常,根本不會打開App
2、Universal Link請求apple-app-site-association時機
當我們的App在設備上第一次運行時,如果支持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,所以如果想要避免服務器接收過多GET請求,可以直接把apple-app-site-association放在./well-known目錄下
服務器上apple-app-site-association的更新不會讓iOS本地的apple-app-site-association同步更新,即iOS只會在App第一次啟動時請求一次,以后除非App更新或重新安裝,否則不會在每次打開時請求apple-app-site-association
記錄一個小問題
集成微信1.8.6.2版本的微信分享SDK時,引入工程發現根據官方文檔配置的依賴仍然缺少,編譯報錯
需要添加libc++.tbd
或者將工程支持c++編譯,把其中一個文件后綴改為.mm即可
QQ分享的校驗
QQ也發布了關于Universal Link的支持與適配
官方文檔教你如何配置
看過之前的講解之后,這里簡單陳述一下
由于qq對于path有一定的要求,apple-app-site-association文件需要我們單獨按照qq的配置
{
"appID": "EB333MN775.com.hundsun.InternetSellTicket.appstore",
"paths": [
...
"/qq_conn/${你的qq應用APPId}/*"
]
}
然后去開放平臺維護一下相關信息,校驗通過之后就可以了