这篇文章给大家分享的是有关JS拉起或下载app的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联建站主营南开网站建设的网络公司,主营网站建设方案,App定制开发,南开h5小程序开发搭建,南开网站营销推广欢迎南开等地区企业咨询产品提了个需求,通过手机网页判断是否安装了自己公司app,如果安装了则拉起app,没有安装则跳转到下载页。
经过各种查阅资料尝试总结了一个还算可以的办法。
拉起app的原理就是js和原生统一好一个地址,例如(qiyimobile://self/qiyi.madeindexpage)。然后浏览器发起请求,如果app安装了则会拦截这个请求并且打开。
下面是安卓代码配置。其实scheme和host要和js这边统一
js这边稍微麻烦一些。如果只拉起app比较简单,直接通过a连接或者window.location.href=“**”即可。不过这里有个问题,就是有些手机在未安装app的时候会识别我们之前定的那个协议尝试打开这个网页,当然会报找不到网页。这里用iframe的方式兼容性稍好。
var ifr = document.createElement('iframe'); ifr.src = 'qiyimobile://self/qiyi.madeindexpage'; document.body.appendChild(ifr);
当手机未安装app时应该跳转到下载页,很多人说延时一下直接跳转就行,如下
window.location.href=“打开地址” setTimeout(function() { window.location.href=“下载地址” }, 500);
当然这样也是有问题的,因为有的手机拉起app也不会自动清除定时器,即无论是否安装app,页面都会在500ms后跳转到下载页。所以判断是否需要跳转到下载页是最麻烦的事。最终尝试如下是比较好的解决方法。
设置一个初始时间,打开拉起app地址后有个结束时间,计算两者之差,当差大于一定时间是说明安装了app,当差很小时说明没有打开app,需要跳转到下载页。
最终代码如下
downloadapp.addEventListener('click', function() { var start = new Date();//记录初始时间 var t = 500; var ifr = document.createElement('iframe'); ifr.src = 'qiyimobile://self/qiyi.madeindexpage';//打开app document.body.appendChild(ifr); ifr.onload = function() { }; ifr.style.display='none'; setTimeout(function() { document.body.removeChild(ifr); var end = new Date();//记录结束时间 console.log(end - start) if (end - start <= (t + 30)) {//两者之差小于30ms时跳转到下载页 window.location.href = "https://www.baidu.com" } }, t); })
感谢各位的阅读!关于“JS拉起或下载app的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。