問題概述:
開發的項目中IOS客戶端早期是通過短連接跳轉safari中介頁面的方式實現喚醒APP,這種方式需要中介網頁通過JS 延時執行的方式判斷 系統是否安裝了APP。
目前微信對Scheme 打開外部應用做了限制。IOS 要做到從微信直接打開APP 需要使用到 Universal Links 。IOS app 第一次啓動時,系統默認從支持HTTPS的註冊域名下獲取 apple-app-site-association 文件Universal Links內容(https://xxx.com/apple-app-site-association,https://xxx.com/.well-known/apple-app-site-association)。
apple-app-site-association 文件內容格式:
{
"applinks": {
"apps": [],
"details": [{
"appID": "appID.com.xxxx",
"paths": ["/app/*", "/"]
}, {
"appID": "appID.com.xxxx",
"paths": ["/app/*", "/"]
}]
}
}
服務端通過反向代理服務器Nginx 直接響應靜態字符串的方式 向IOS客戶端 提供 apple-app-site-association查詢功能,這種方式既可以避免因系統升級造成apple-app-site-association 查詢不可用,也可以提升請求響應速度減輕後端 web 服務器不必要的壓力。
具體配置方式:在nginx 配置文件 server 節點下新增 兩個location 配置:
location /apple-app-site-association {
charset UTF-8;
default_type text/html;
return 200 '{\"applinks\":{\"apps\":[],\"details\":[{\"appID\":\"appID.com.xxxx\",\"paths\":[\"/app/*\",\"/\"]},{\"appID\":\"appID.com.xxxx\",\"paths\":[\"/app/*\",\"/\"]}]}}';
}
location /.well-known/apple-app-site-association {
charset UTF-8;
default_type text/html;
return 200 '{\"applinks\":{\"apps\":[],\"details\":[{\"appID\":\"appID.com.xxxx\",\"paths\":[\"/app/*\",\"/\"]},{\"appID\":\"appID.com.xxxx\",\"paths\":[\"/app/*\",\"/\"]}]}}';
}