移动端H5检测设备是否安装了某个APP

试了一下网上的主要的几种方法,发现都不起作用,比如通过iFrame来判断的,在真机尝试过,并没有效果。

后面在某位兄弟博客上看到一种方法,通过判断浏览器窗口是否失去焦点来判断有没有安装APP,如果有安装的话,会调起APP,窗口会失去焦点。如果没有安装APP的话,焦点还在该窗口上,然后设定一个时间,超时即打开下载页。

代码如下:


function checkOutApp() {

       var isBlur = false;

        // 通过URL scheme来调起APP

        location.href = 'APP的URL scheme';

        setTimeout(function() {

            if (!isBlur) {

                location.href = 'APP的下载链接';

            }

        }, 1000);

        // window 每次失去焦點

        window.onblur = function() {

            console.log('失去焦點');

            isBlur = true;

        };

        var hiddenProperty = 'hidden' in document ? 'hidden' :

            'webkitHidden' in document ? 'webkitHidden' :

            'mozHidden' in document ? 'mozHidden' :

            null;

        var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');

        var onVisibilityChange = function() {

            if (document[hiddenProperty]) {

                console.log('失去焦點');

                isBlur = true;

            }

        }

        document.addEventListener(visibilityChangeEvent, onVisibilityChange);

    }

你可能感兴趣的:(移动端H5检测设备是否安装了某个APP)