问题概述:

开发的项目中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  文件内容格式:

  1.  
    {
  2.  
    "applinks": {
  3.  
    "apps": [],
  4.  
    "details": [{
  5.  
    "appID": "appID.com.xxxx",
  6.  
    "paths": ["/app/*", "/"]
  7.  
    }, {
  8.  
    "appID": "appID.com.xxxx",
  9.  
    "paths": ["/app/*", "/"]
  10.  
    }]
  11.  
    }
  12.  
    }

服务端通过反向代理服务器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\":[\"*\"]}]}}';

}

 相关博客:https://www.jianshu.com/p/3936287bccdd