问题概述:
开发的项目中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\":[\"*\"]}]}}';
}