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 Ajax学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
javascript将数组插入到另一个数组中的代码
Jan 10 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
js下载文件并修改文件名
May 08 Javascript
利用forever和pm2部署node.js项目过程
May 10 Javascript
微信小程序如何获取用户手机号
Jan 26 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
JS基于对象的链表实现与使用方法示例
Jan 31 Javascript
详解微信UnionID作用
May 15 Javascript
Vue computed 计算属性代码实例
Apr 22 Javascript
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
模仿OSO的论坛(五)
2006/10/09 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
php 获取本地IP代码
2013/06/23 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
pyramid配置session的方法教程
2013/11/27 Python
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
详解Python 正则表达式模块
2018/11/05 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
开业庆典邀请函
2014/01/08 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
合同协议书格式
2014/04/18 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
师德标兵事迹材料
2014/12/19 职场文书
女方离婚起诉书
2015/05/18 职场文书
《去年的树》教学反思
2016/02/18 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
Python基本数据类型之字符串str
2021/07/21 Python