js判断移动端是否安装某款app的多种方法


Posted in Javascript onDecember 18, 2015

本文实例讲解了js判断移动端是否安装某款app的多种方法,分享给大家供大家参考,具体内容如下

第一种方法:

一:判断是那种设备

var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

二:安卓设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载app

android();

if(isAndroid){
      function android(){
        window.location.href = "openwjtr://com.tyrbl.wjtr"; /***打开app的协议,有安卓同事提供***/
        window.setTimeout(function(){
           window.location.href = "http://www.wjtr.com/download/index.html"; /***打开app的协议,有安卓同事提供***/
        },2000);
      };

二:ios设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载appios();

if(isiOS){
      function ios(){
        var ifr = document.createElement("iframe");
        ifr.src = "openwjtr://com.tyrbl.wjtr"; /***打开app的协议,有ios同事提供***/
        ifr.style.display = "none"; 
        document.body.appendChild(ifr);
        window.setTimeout(function(){
          document.body.removeChild(ifr);
           window.location.href = "http://www.wjtr.com/download/index.html"; /***下载app的地址***/
        },2000)
      };
}

第二种方法:

虽然在Js中可以启动某个app,但是并不能判断该app是否安装;
启动app需要的时间较长,js中断时间长,如果没安装,js瞬间就执行完毕。直接上代码吧!
html代码:

<a href="javascript:testApp('tel:1868888888')">打电话</a>

js代码:

function testApp(url) { 
  var timeout, t = 1000, hasApp = true; 
  setTimeout(function () { 
    if (hasApp) { 
      alert('安装了app'); 
    } else { 
      alert('未安装app'); 
    } 
    document.body.removeChild(ifr); 
  }, 2000) 
 
  var t1 = Date.now(); 
  var ifr = document.createElement("iframe"); 
  ifr.setAttribute('src', url); 
  ifr.setAttribute('style', 'display:none'); 
  document.body.appendChild(ifr); 
  timeout = setTimeout(function () { 
     var t2 = Date.now(); 
     if (!t1 || t2 - t1 < t + 100) { 
       hasApp = false; 
     } 
  }, t); 
}

第三种方法:

最近在做项目的wap版,有个需求就是,先判断手机上是否有我们的APP应用,如果有的话打开应用,没有才跳转到wap页面。 
wap简单来说就是运行在移动端浏览器上的网站。不管应用在什么地方,总之就是浏览器呗,可以通过JS来判断本地是否有某应用,实现方式实际就是将http协议转为本地软件协议。 
还是直接贴代码吧。
 如下: 

<script language="javascript">
 if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
  var loadDateTime = new Date();
  window.setTimeout(function() {
   var timeOutDateTime = new Date();
   if (timeOutDateTime - loadDateTime < 5000) {
    window.location = "要跳转的页面URL";
   } else {
    window.close();
   }
  },
  25);
  window.location = " apps custom url schemes ";
 } else if (navigator.userAgent.match(/android/i)) {
  var state = null;
  try {
   state = window.open("apps custom url schemes ", '_blank');
  } catch(e) {}
  if (state) {
   window.close();
  } else {
   window.location = "要跳转的页面URL";
  }
 }
</script>

apps custom url schemes 是什么呢?
其实就是你与APP约定的一个协议URL,你的IOS同事或Android同事在写程序的时候会设置一个URL Scheme,
例如设置:
URL Scheme :app
然后其他的程序就可以通过URLString = app://  调用该应用。
还可以传参数,如:
app://reaction/?uid=1
原理:500ms内,本机有应用程序能解析这个协议并打开程序,调用该应用;如果本机没有应用程序能解析该协议或者500ms内没有打开这个程序,则执行setTimeout里面的function,就是跳转到你想跳转的页面。

以上就是js判断移动端是否安装某款app的多种方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
js仿淘宝和百度文库的评分功能
May 15 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
jQuery实现动态控制页面元素的方法分析
Dec 20 jQuery
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
Vue与Node.js通过socket.io通信的示例代码
Jul 25 Javascript
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
在JavaScript中如何使用宏详解
May 06 Javascript
javascript实现保留两位小数的多种方法
Dec 18 #Javascript
原生js实现图片轮播特效
Dec 18 #Javascript
js表单中选择框值的获取及表单的序列化
Dec 17 #Javascript
浏览器兼容性问题大汇总
Dec 17 #Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
Dec 17 #Javascript
js调出上下文菜单的实例
Dec 17 #Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 #Javascript
You might like
phpBB BBcode处理的漏洞
2006/10/09 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
详解python的数字类型变量与其方法
2016/11/20 Python
详解python eval函数的妙用
2017/11/16 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python中Numpy mat的使用详解
2019/05/24 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
普通员工辞职信
2014/01/17 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
安全生产月标语
2014/10/07 职场文书
教师党员承诺书2015
2015/01/21 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
房地产项目合作意向书
2015/05/08 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
详解Python为什么不用设计模式
2021/06/24 Python