admin管理员组

文章数量:1538993

 前言: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

本文标签: 源码libcallappappwebapp