我是靠谱客的博主 小巧鲜花,最近开发中收集的这篇文章主要介绍js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面直接上代码!!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

@js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面

直接上代码!!

function _openAppUrl($appUrl,$downLoadUrl){
    var ua = navigator.userAgent.toLocaleLowerCase(),
        openBrowser = null,
        deviceVersion = 0,
        matchVersion = null,
        openAppType = "",
        downLoadUrl = $downLoadUrl;

    //如果是在微信内部点击的时候
    if(ua.indexOf("micromessenger") != -1 ){
        _openAppUrl = function(){
            alert("请使用浏览器打开!");
        }
    }else{
        //在浏览器打开,判断是在移动端还是在PC端
        if(matchVersion = navigator.userAgent.match(/OSs*(d+)/)){
            //赋值,并且判断
            //IOS设备的浏览器
            deviceVersion = matchVersion[1] || 0;

            if(deviceVersion - 9 >= 0){
                openAppType = "newType";
            }
        }else if(matchVersion = navigator.userAgent.match(/Androids*(d+)/)){
            //Android的设备
            deviceVersion = matchVersion[1] || 0;

            if(deviceVersion - 5 >= 0){
                openAppType = "newType";
            }

        }else{
            //PC端的设备
            openAppType = "pc";
        }
        if(openAppType == "pc"){
            _openAppUrl = function(){
                alert("请使用浏览器打开!");
            }
        }else if(openAppType == "newType"){
            //使用新的方法,尝试打开APP
            //IOS>9,Android>5的版本
            var timeout, t = 1000, hasApp = true;
			var t1 = Date.now();
			var ifr = document.createElement("iframe");
			ifr.setAttribute('src', appUrl);
			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);

			setTimeout(function () {
				if (hasApp) {
					location.href = appUrl;
				} else {
					location.href = downLoadUrl;
				}
				document.body.removeChild(ifr);
			}, 2000)
        }else{
            //使用计算时差的方案打开APP
            var checkOpen = function (cb){
                var _clickTime = +(new Date()),
                    _count = 0,
                    intHandle = 0;

                //启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束
                intHandle = setInterval(function(){
                    _count++;
                    var elsTime = +(new Date()) - _clickTime;

                    if (_count>=100 || elsTime > 3000 ) {
                        clearInterval(intHandle);
                        //计算结束,根据不同,做不同的跳转处理,0表示已经跳转APP成功了
                        if ( elsTime > 3000 || document.hidden || document.webkitHidden) {
                            cb(0);
                        } else {
                            cb(1);
                        }

                    }
                }, 20);
            }
            _openAppUrl = function(url){
                var ifr = document.createElement('iframe');

                ifr.src = url;
                ifr.style.display = 'none';

                checkOpen(function(opened){
                    if(opened === 1){
                        location.href = downLoadUrl;
                    }
                });

                document.body.appendChild(ifr);

                setTimeout(function() {
                    document.body.removeChild(ifr);
                }, 2000);
            }

        }

    }
}
//执行方法
//$appUrl=>APP_SCHEME_URL(与APP约定的一个协议URL)
//$downLoadUrl =>下载地址,我这里直接跳公共下载页面,
//下载页面里判断了下载ios还是安卓,这里就不一一赘述
_openAppUrl($appUrl,$downLoadUrl);

希望以上代码能帮到在茫茫人海寻找方法的里,亲测有效,注意:微信内打开网址和qq等第三方app打开的网址执行该方法是无效,需要用常规的手机自带的浏览器等常用浏览器才有效

最后

以上就是小巧鲜花为你收集整理的js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面直接上代码!!的全部内容,希望文章能够帮你解决js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面直接上代码!!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部