問題概述:
開發的項目中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\":\"428Q4HJB4N.com.sycm.dongwang\",\"paths\":[\"*\"]}]}}';
}
location /usr/local/iosLink/apple-app-site-association {
charset UTF-8;
default_type text/html;
return 200 '{\"applinks\":{\"apps\":[],\"details\":[{\"appID\":\"428Q4HJB4N.com.sycm.dongwang\",\"paths\":[\"*\"]}]}}';
}