關於 Universal Links 及接入遇到的問題
背景
- iOS 13 對三方App的跳轉安全級別的要求提高
- 一些大廠的 SDK 積極響應要求,如我們就是在接入 QQ 互聯時只能下載最新的SDK,要求必須使用 Universal Links
開發測試環境
- Mac 10.14.5 iOS 13.2.3 iphone 7
- QQ SDK 3.3.7
遇到的問題
- 在 iOS 13 以下的系統可以正常分享, 13的系統初次安裝可分享之后均不能分享,如下圖每次會檢查
Universal Links 的正確接入過程(按 Apple 官方分三步)
- 創建名字為 `apple-app-site-association` 且飲食的數據為 JSON 格式,文件內容決定你的 APP 可以處理那些 URL
- 將文件 `apple-app-site-association` 給服務端且必須支持 **https**,文件的位置放在根目錄下或 `.well-know` 子文件夾下(個人建議兩處都放,開始就是因為后者路徑下沒話,害我調試了半天,后面會貼出調試方法)
- 准備 APP 要處理的 Universal Links
創建 apple-app-site-association
文件
- 基本的格式如下
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
**以上是 apple-app-site-association
文件的內容示例, 注意文件名后面不要接后綴 .json
**
目前開發者可改的內容是appID & paths, applinks\apps 固定寫法;
appID的組成:申請的開發者帳號的ID:你在Xcode中Domain里填的域名
paths你自己定義的合法路徑,在這里寫的路徑,你可以拼成這樣: https://com.apple.wwdc/wwdc/news/ , 此路徑在你手機的記事本和 Safari中打開會調轉到你的APP
*
: 是通配符,/*
表示: /
后的所有路徑都匹配
Xcode中相關的配置
檢驗配置是否成功(輸入自己的域名按下面兩種方式)
- 在手機自帶的 APP 備忘錄 中輸入 https://help.wechat.com/app/,如下圖表示成功
- 在手機的 Safari 中輸入 https://help.wechat.com/app/,如下圖表示成功(這里要多下拉幾次,藏在網址的導航欄下面)
遇到的問題
- 在 iOS 的 13 及以上的系統上,當時在服務端的 .well-known 路徑下沒有放 AASA 文件,導致 13 系統的手機一直下載不成功
- 參考 stackoverflow 上的方法調試找到下載不成功的原因,加上后測試就Ok了
<a href='https://stackoverflow.com/questions/32751225/ios-universal-links-are-not-opening-in-app'>Stackoverflow Univerlinks</a>
- 調試步驟:
* 在 Xcode 中 Window -> Device and Simulators -> Open Console -> 在左邊欄打開選擇你的設備
* 在右上角的搜索框中輸入 `swcd` 去檢索你下載 AASA 文件的相關信息
* 手機沒有下載如下圖
* 下載成功的大概如下圖