admin管理员组文章数量:1609986
前言:h5/web实现“唤起app,如果已下载就直接打开app,如果不能下载,就直接跳转下载”的功能,通过反复查资料,我知道目前有2钟实现方式:
1. 是通过把h5cordova打包成app调用cordova的方法。
2. 但是绝大多数做法是通过h5打开app链接地址,如果能打开则直接会跳转,如果不能,则设置一个延迟定时器setTimeout(如延迟2秒),然后直接进行下载window.location.href=downUrl。但是因为ios和android以及不同浏览器不同应用内置的浏览器打开,会出现的一些被限制兼容等问题。所以更为精细的做法是更加ios和android以及浏览器,版本,常用打开应用的内置浏览器.....等条件,一般存在三种打开app的方式:
注意:方法二的一个弊端,在打开app链接时,如果因为网络延迟响应超过2秒也会被识别为没有安装app,直接进行下载链接。或者如果用超过2秒且页面没有关闭同时满足才下载,但是在ios9以上的safari浏览器上仍然会存在的问题是,safari浏览器通过window.location.href跳转链接时,会默认有弹窗提示(链接有效时,提示是否需要打开app的弹窗。链接无效时,仍然会提示,该网址无效的弹窗)。如果链接有效,这个默认弹窗在2秒之后在操作是否需要打开app时,此时已经超过2秒,代码仍然会视为页面超过2秒仍然没有关闭,进而会直接指向下载app链接的代码。
方式一:location打开,最常见的打开方式。但是一些浏览器会限制这种方式打开。
window.location.href=openUrl
方式二:a标签点击打开
const tagA = document.createElement('a');
tagA.setAttribute('href', openUrl);
tagA.style.display = 'none';
document.body.appendChild(tagA);
tagA.click();
方式三:iframe 标签点击打开
const iframe = document.createElement('iframe');
iframe.frameborder = '0';
ifr
版权声明:本文标题:callapp-lib源码解读,实现h5webapp打开app,如果不能就直接下载。 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726984946a1093230.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论