html5页面js判断是否安装app,以及判断是否在app内部打开html5页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5页面js判断是否安装app,以及判断是否在app内部打开html5页面相关的知识,希望对你有一定的参考价值。

一、html5页面js判断是否安装app
目前还不能通过浏览器直接判断是否安装app
通过谷歌参考别人的方式和测试
我们知道安装了某个app后通过scheme跳转协议(引荐:http://www.jianshu.com/p/eed01a661186)进入到app
没有安装时点击链接是无效的
 
所以通过点击链接后到执行进入app之间的时间差来判断是否安装app 
1、下面只是处理了安卓系统时
  
   if (navigator.userAgent.match(/android/i) ){
    var nowTime = new Date().valueOf();
    setTimeout(function(){  
         var launchTime = new Date().valueOf() - nowTime;
         if(launchTime < 28){     //28是调试估算出来的打开本地app基本需要的时间
              window.location = "/phone/forward/app_download_redirect"; //下载app页面
         }
    },25);
    window.location="mysppscheme://";//自己定义的scheme协议
  } 
2、iphone用一样的原理实现测试有效
 
3、weixin分享里面的页面会在url添加变量isappinstalled
 isappinstalled=1的时候代表安装了app,值为0的时候代表没有安装
 微信屏蔽了url scheme直接跳转,所以weixin分享页通过提示浏览器打开
 再根据之前的isappubstalled值来判断是否安装app
 
var isWeixin = navigator.userAgent.match(/MicroMessenger/ig); //是否在微信
var appInstalled = document.location.href.indexOf("isappinstalled=1")>=0; //是否安装app
 
上面方式是我通过谷歌看大家提出的方式和自己的测试唯一还没出现问题的方式
当然后续有问题会继续更新
 
二、判断是否在app内部打开html5页面
判断当前页面是否在app内部打开,单纯的web前端还不能解决
需要客户端对userAgent添加自己app相关的字段
(useragent设置Android:http://www.jincon.com/archives/354/)
 
var userAgent = navigator.userAgent.toLowerCase(), //获取userAgent
     isInapp = userAgent.indexOf("sunyuki")>=0;//查询是否有相关app的相关字段
 

以上是关于html5页面js判断是否安装app,以及判断是否在app内部打开html5页面的主要内容,如果未能解决你的问题,请参考以下文章

JS判断是否在微信浏览器打开

判断浏览器

js通过ua标识判断h5页面是否内嵌在app内

如何判断 手机上是不是安装 某个app 比如百度地图

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

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