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 相关文章推荐
常用参考资料(手册)下载或者链接
Jul 22 Javascript
jquery提示 &quot;object expected&quot;的解决方法
Dec 13 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
Express的路由详解
Dec 10 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
Oct 24 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
VUE中的无限循环代码解析
Sep 22 Javascript
Node.js Express安装与使用教程
May 11 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python3实现高效的端口扫描
2019/08/31 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
判断单链表中是否存在环
2012/07/16 面试题
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
给老婆的道歉信
2015/01/20 职场文书
入党自传范文2015
2015/06/26 职场文书
教师节晚会主持词
2015/06/30 职场文书
Ruby处理CSV数据方法详解
2022/04/18 Ruby
Python绘制散乱的点构成的图的方法
2022/04/21 Python