JS拉起或下载app的实现代码


Posted in Javascript onFebruary 22, 2017

产品提了个需求,通过手机网页判断是否安装了自己公司app,如果安装了则拉起app,没有安装则跳转到下载页。

经过各种查阅资料尝试总结了一个还算可以的办法。

拉起app的原理就是js和原生统一好一个地址,例如(qiyimobile://self/qiyi.madeindexpage)。然后浏览器发起请求,如果app安装了则会拦截这个请求并且打开。

下面是安卓代码配置。其实scheme和host要和js这边统一

<span style="font-size:18px;"><intent-filter> 
        <action android:name="android.intent.action.VIEW" /> 
        <category android:name="android.intent.category.DEFAULT" /> 
        <category android:name="android.intent.category.BROWSABLE" /> 
        <data  
      android:scheme="qiyimobile"  
      android:host="self/qiyi.madeindexpage"  
      android:pathPrefix="/**"> 
     </data> 
</intent-filter></span>

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的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery mobile实现拨打电话功能的几种方法
Aug 05 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
JS实现的竖向折叠菜单代码
Oct 21 Javascript
ajax跨域调用webservice的实现代码
May 09 Javascript
Vue框架中正确引入JS库的方法介绍
Jul 30 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
简述vue中的config配置
Jan 23 Javascript
JavaScript实现连连看连线算法
Jan 05 Javascript
微信小程序实现购物页面左右联动
Feb 15 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 Javascript
小程序实现背景音乐播放和暂停
Jun 19 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
js实现带简单弹性运动的导航条
Feb 22 #Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 #Javascript
javascript 网页进度条简单实例
Feb 22 #Javascript
详解闭包解决jQuery中AJAX的外部变量问题
Feb 22 #Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 #Javascript
纯JS实现轮播图
Feb 22 #Javascript
javascript 操作cookies详解及实例
Feb 22 #Javascript
You might like
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
js arguments.callee的应用代码
2009/05/07 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
python判断字符串是否包含子字符串的方法
2015/03/24 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
python高阶爬虫实战分析
2018/07/29 Python
python实现学员管理系统
2019/02/26 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
大宝sod蜜广告词
2014/03/21 职场文书
节电标语大全
2014/06/23 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
英文版辞职信
2015/02/28 职场文书
中学生自我评价2015
2015/03/03 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书