配置 Universal Link
建立一個json檔案,格式固定,以下配置為此域名下所有連結,均跳轉至app。Ps: 特殊情況會出現問題。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleID",
"paths": [
"*"
]
}
]
}
}
此處為本人剛剛遇到的特殊情況流程:
在微信公衆号商城中,購買商品。支付清單中,使用支付寶支付,由于不能直接調起支付寶,是以需要在Safari中打開。此時跳轉到Safari後(此處預設已經安裝了該商城的app),并不會詢問打開支付寶,而是會直接調起app,并不會進行支付詢問。
解決以上情況的方法為,确定具體的通用路徑,配置如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleID",
"paths": [
"/linkPath/*", "/wechatAppId"
]
}
]
}
}
linkPath為app分享出去的路徑,後面需要接通配符“*”。
加入wechatAppId的目的是微信分享後,能正常傳回app。 因為如果項目中,沒有微信分享的話,可以将wechatAppId去掉。
Ps: wechatAppId後面,不需要寫通配符“*”。
配置檔案中的details資料, 其中的appID對應的value為teamID 和 bundleID。配置時用“.”拼接,如上述代碼teamID在前,bundleID在後。上述兩個ID,可以在蘋果的開發者網站内找到,具體位置如下圖,順便将Associated Domains選中。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9kkeOd3ZU5UeVRkTyUkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0AzN2ADM0UTM5ITNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
編輯完成後,導出檔案,并命名為 apple-app-site-association。若有擴充名,測需隐藏擴充名。如下圖:
生成此檔案後,需将此檔案,放至App所用域名的根目錄下。
配置項目
上面的操作我們已經開啟了Associated Domains,這裡直接配置就行了,如下圖:
applinks:+ App的域名,例如:applinks:baidu.com
在plist檔案中,新增weixinULAPI,如下圖:
在AppDelegate中,添加如下方法:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
return WXApi.handleOpenUniversalLink(userActivity, delegate: self)
}
至此,Universal Links 配置完成。
檢測是否配置成功
将App删除,重新編譯完成,安裝到手機後。打開Safari,輸入App所使用的域名,然後下拉一下,如果發現界面頂部有App的入口,點選後,可跳轉到App,則表示配置成功。如下圖:
配置微信開發平台資訊
需将App域名添加到微信開放平台的資訊中,如: https://baidu.com/
特别注意:
1. 此處域名必須支援https
2.首次發起分享時,會出現二次跳轉的行為,具體流程:App拉起微信 - 出現“正在連接配接”界面 - 傳回App - 重新打開微信。這是新的驗證流程,每個使用者首次使用時都會出現上述跳轉。(如同一使用者多次使用分享均出現跳轉,請檢查Universal Links配置 )