iOS:在浏览器中判断是否安装了某个程序?

网上找了一堆代码
关键点也掌握了
现在的问题是,当我添加一个iframe并设置src为程序的schema url时,直接打开了该程序。

代码:

<script type="text/javascript">
        $(document).ready(function () {
            var log = function (msg) {
                $('body').before('<div class="log">' + msg + '</div>');
            };
            var timeout, t = 1000, hasApp = true;
            setTimeout(function () {
                if (hasApp) {
                    log('安装了app');
                } else {
                    log('未安装app');
                }
            }, 2000);
            function testApp() {
                var t1 = Date.now();
                var ifr = $('<iframe id="ifr"></iframe>');
                ifr.attr('src', 'abc1234://');
                $('body').append(ifr);
                timeout = setTimeout(function () {
                    try_to_open_app(t1);
                }, t);
            }
            function try_to_open_app(t1) {
                var t2 = Date.now();
                if (!t1 || t2 - t1 < t + 200) {
                    hasApp = false;
                }
            }
            testApp();
        });
    </script> 

在浏览器中判断是否安装了某个程序

浏览器判断是否安装了ios/android客户端程序

由于安全隐私的原因,目前网页端无法通过js脚本直接判断某个APP是否已安装,只能首先通过js尝试性的启动app,然后再进入安装流程。启动app的方案有schema,universal link,具体详情请参考openinstall