拉起app的原理就是js和原生统一好一个地址,例如(weixin://)。然后浏览器发起请求,如果app安装了则会拦截这个请求并且打开。
js这边稍微麻烦一些。如果只拉起app比较简单,直接通过a连接或者window.location.href=“**”即可。不过这里有个问题,就是有些手机在未安装app的时候会识别我们之前定的那个协议尝试打开这个网页,当然会报找不到网页。但如果使用iframe拉起app在ios9以上不支持。这里我们对ios拉起app做一个总结:
一、iframe:当没安装时safari不会提示错误弹框,但iframe只适合ios9以下;
二、window.location.href: 兼容性良好,但在没安装app的情况下会在safari中弹框提示网址无效;
三、universal Link:在ios9及以上生效。
var ua = window.navigator.userAgent;
window.device.isIOS= !!ua.match(/(iPhone|iPod|iPad);?/i);
window.device.isSafari = window.device.isIOS && d.match(/Version/([d.]+)([^S](Safari)|[^M]*(Mobile)[^S]*(Safari))/) ;
var o = navigator.userAgent.match(/OSs([d]+)/) , edition = o ? parseInt(o[1], 10) : 0; edition >= 9 ? window.device.isSafari || (window.location.href = iosUrl) : this.wakeupApp(iosUrl);
综上如果页面中有拉起app的按钮,最好的实现方式是链接跨域指向另一个域名下的下载页,universal Link拦截拉起,如果没安装则到达下载页。