Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从浏览器启动Android应用程序:如何使用“检测”功能;“意图”;支持?_Javascript_Android_Google Chrome_Android Intent - Fatal编程技术网

Javascript 从浏览器启动Android应用程序:如何使用“检测”功能;“意图”;支持?

Javascript 从浏览器启动Android应用程序:如何使用“检测”功能;“意图”;支持?,javascript,android,google-chrome,android-intent,Javascript,Android,Google Chrome,Android Intent,我们正在尝试为我们的应用程序构建一个参数化的入口网页,其中大约50%的用户将安装我们的应用程序,而50%的用户不会 最初,我们一直在使用一个专门的URL方案,我们的应用程序已经注册;即 myapp://dothing?specialParameters=5 然而,我们很难发现用户没有安装我们的应用程序,或者我们的应用程序的早期版本不支持URL方案。在Chrome或Android浏览器中,用户被导航到浏览器生成的错误页面,因为它找不到服务器 在iOS Safari和Android Firefox中

我们正在尝试为我们的应用程序构建一个参数化的入口网页,其中大约50%的用户将安装我们的应用程序,而50%的用户不会

最初,我们一直在使用一个专门的URL方案,我们的应用程序已经注册;即

myapp://dothing?specialParameters=5

然而,我们很难发现用户没有安装我们的应用程序,或者我们的应用程序的早期版本不支持URL方案。在Chrome或Android浏览器中,用户被导航到浏览器生成的错误页面,因为它找不到服务器

在iOS Safari和Android Firefox中,我们可以通过在导航前使用setTimeout来解决这个问题

function timeoutFn() {
            var timeout = setTimeout(function() {
                window.location = //iOS Appstore location;
            }, 1000);
            window.addEventListener("pagehide", function(evt) {
                clearTimeout(timeout);
            });

            window.location = "myApp://dothing?specialParameters=5";
        }
我的Chrome/Android浏览器解决方案是使用谷歌推荐的意向系统,如下所述:

我已经对此进行了测试,它实际上似乎工作得很好——然而,Firefox不知道如何处理以“intent://”开头的链接。我们仍然可以在Firefox上使用上面的JavaScript函数,但我不太愿意开始为它编写用户代理嗅探代码,特别是因为我认为Android上的任何其他web浏览器都可能同样缺乏意图支持


因此,回到标题问题:Chrome和Android浏览器能够通过“intent://”链接打开应用程序-是否有任何方法,使用JavaScript或类似的方法,使用功能检测来找到这种支持?

这是我们目前使用的,然而,这远不是理想的

function isItentsSupported() {
    var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    if (isChrome) {
        var version = parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10);
        return version >= 25; 
    } else {
        return false;
    }
}

Chrome版本号基于

所以,谷歌的规范是使用用户代理嗅探。我认为,相比之下,每一次事件都让微软看起来更加网络开放……不,规范没有说要使用代理嗅探(我已经更新了我的答案,让它更清晰)。我找不到任何其他方法来检测意图是否得到支持。