在没接触这个功能之前,查询各种文档后也只是似懂非懂,做过之后,发现其实很简单,简言之就是通过一个iframe或者a标签来跳转app端提供的URL schema(至于这个URL schema的组成格式,前端可以不用管,如果确实想要知道,可以自行百度),经测试用iframe标签的兼容性比a标签要好,故此处以iframe为例
autoCallApp(scheme, btnLink) { // scheme:schema链接, btnLink:本地未安装app时要跳转的目的链接
const ifr = document.createElement('iframe');
ifr.href = scheme;
ifr.style.display = 'none';
document.body.appendChild(ifr);
const openTime = +new Date();
window.setTimeout(() => {
document.body.removeChild(ifr);
if (+new Date() - openTime > 2000) { // 若2s后执行的时间减openTime超过2s,则默认其启动本地app失败,跳转到btnLikn (目前前端是没法知道h5唤起app是否成功的)
window.location.href = btnLink;
}
}, 2000);
}
PS:此种方法目前在浏览器、微信、qq、微博测试通过,在头条app里未生效(需要找头条相关人士开个白名单)