如何用js检测手机是否安装某个app

问题描述

  如果本地安装了app那么直接打开,否则苹果要跳转到app-store,安卓则要跳到对应的市场

解决方案 一

        //html代码中 的 a 标签,以微信为例,默认的是调用weixin scheme,去打开本机的微信,如果没有则跳转到相应连接    <a href="weixin://" class="btn-download">立即打开</a>      // 为btn-download 绑定事件,如果在500ms内,没有解析到协议,那么就会跳转到下载链接      var appstore, ua = navigator.userAgent;
        if(ua.match(/Android/i)){
            appstore = ‘market://search?q=com.singtel.travelbuddy.android‘;
        }
        if(ua.match(/iphone|ipod|ipad/)){
            appstore = "https://itunes.apple.com/cn/app/wei-xin/id414478124?mt=8&ign-mpt=uo%3D4";
        }
        function applink(fail){
            return function(){
                var clickedAt = +new Date;
                // During tests on 3g/3gs this timeout fires immediately if less than 500ms.
                setTimeout(function(){
                     // To avoid failing on return to MobileSafari, ensure freshness!
                      if (+new Date - clickedAt < 2000){
                          window.location = fail;
                      }
                }, 500);
            };
        }
        $(‘.icon-download, .btn-download‘)[0].onclick = applink(appstore);  

解决方案二

通过在页面中生成一个隐藏的iframe,iframe的src指向 app 协议,例如 weixin scheme,并监听onerror事件,意思是如果无法解析协议,就会触发onerror事件,但是我尝试了一下,未果。代码如下,可参考一下。

     // 页面中有div#iframe-box 用来插入生成的iframe,还是以微信为例     var ifm = document.createElement(‘iframe‘), isInstalled;
        ifm.style.display = ‘none‘;
        ifm.src = ‘wixin://‘;
        ifm.onload = function(e){
            var e = e || window.event;
            e.preventDefault();
        }
        ifm.onerror = function(){
            //isInstalled = false;
            alert(1);
        }
        document.getElementById(‘iframe-box‘).appendChild(ifm);

    // 但这时的问题是,iframe的src成功解析到了协议,则会直接跳转,但是解析不到的话,也不会触发error事件,这个还要继续研究    // 可以把上面的代码,放到函数中,然后作为某个按钮的响应函数。

解决方案三

  对于ios手机,会有如下写法

  <meta name="apple-itunes-app" content="app-id=414478124" />

  将上面代码放到head中,根据name也会知道意思,app-id是微信的app-id,用ios手机看会看到提示,andriod比可以,结果自行实验。(ios就是强大)

后续继续研究中......

时间: 2024-10-17 23:24:12

如何用js检测手机是否安装某个app的相关文章

如何用js检测判断时间日期的间距

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>如何用js检测判断日期大于多少天</title> <script> window.onload=function(){ var ul1=document.getElementById("time"); var span1=ul1.getElementsByTag

获取手机所有安装的app(转的)

获取手机所有安装的app by 伍雪颖 Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; NSLog(@"apps: %@", [workspace performSe

Android检测手机是否安装某个应用

判断手机已安装某程序的方法: private boolean isAvilible(Context context, String packageName){ final PackageManager packageManager = context.getPackageManager();//获取packagemanager List< packageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息 Li

HTML中判断手机是否安装某APP,跳转或下载该应用

有些时候在做前端输出的时候,需要和app的做些对接工作.就是在手机浏览器中下载某app时,能判断该用户是否安装了该应用.如果安装了该应用,就直接打开该应用:如果没有安装该应用,就下载该应用.那么下面就对在浏览器中,用js判断某用户是否安装了该应用,并判断是否打开该应用做个简单的介绍. 那么,怎么判断某用户是否安装了某应用呢? 在这里,先写段html代码,如下: <!doctype html> <html> <head> <meta charset="ut

Dialog显示手机android安装的app信息

最近做功能开发时候需要显示当前手机安装的app信息.这里我使用Dialog来显示.截图如下: 如上截图所示,这个dialog显示了当前手机安装的app,当点击一个菜单项时候就会在上面显示一个上锁的图案(如上图:视频/相机/联系人).这时一个可以对app上锁的设计界面. 首先来看看dialog的创建: private void Init_create_dialog(){ if(null == show_app_dialog){ show_app_dialog = new Dialog(getAct

js判断手机是否安装了某一款app,有则打开,没有去下载

function openApp(){ 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 = "要跳转的下载app页面

js检测手机摇一摇

1.检测设备是否支持重力感应事件deviceorientation deviceorientation 提供设备的物理方向信息,表示为一系列本地坐标系的旋角 function motionHandler(event) { accGravity = event.acceleration; } if (window.DeviceMotionEvent) { window.addEventListener("devicemotion", motionHandler, false); } el

iOS 检测手机是否安装SIM卡

[CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted] 可以判断是否插入了sim卡. 需要CoreTelephony.framework. /** * 检测是否有SIM卡 * [CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted] */ extern NSString* const kCTSMS

ios开发判断手机是否安装微信app

1.代码如下 if ([WXApi isWXAppInstalled]) 2.如果以上代码无效,请在plist文件中添加如下内容