我们正在尝试为我们的应用程序构建一个参数化输入网页,大约50%的用户将安装我们的应用程序,另外50%则没有。
最初,我们使用了我们的应用程序注册的专用URL方案,即:
myapp://dothing?specialParameters=5
然而,我们很难检测到用户没有安装我们的应用程序或者安装了不支持URL方案的早期版本。在Chrome或Android浏览器中,由于找不到服务器,用户会被导航到浏览器生成的错误页面。
在iOS Safari和Android Firefox中,我们可以通过使用setTimeout进行导航前的延迟解决这个问题。
我的解决方案是使用Google推荐的Intent系统来处理Chrome/Android浏览器中的链接,具体介绍可以在这里找到:https://developers.google.com/chrome/mobile/docs/intents 我已经测试过了,这个方法似乎很有效。但是,Firefox不知道如何处理以“intent://”开头的链接。我们仍然可以为Firefox使用上面的JavaScript函数,但我非常不愿意为此编写用户代理嗅探代码,特别是因为我认为任何其他Android上的Web浏览器同样缺乏Intent支持。
所以,回到标题问题:Chrome和Android浏览器能够通过“intent://”链接打开应用程序 - 是否有任何方法,使用JavaScript或类似的方法,来检测这种支持?
最初,我们使用了我们的应用程序注册的专用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";
}
我的解决方案是使用Google推荐的Intent系统来处理Chrome/Android浏览器中的链接,具体介绍可以在这里找到:https://developers.google.com/chrome/mobile/docs/intents 我已经测试过了,这个方法似乎很有效。但是,Firefox不知道如何处理以“intent://”开头的链接。我们仍然可以为Firefox使用上面的JavaScript函数,但我非常不愿意为此编写用户代理嗅探代码,特别是因为我认为任何其他Android上的Web浏览器同样缺乏Intent支持。
所以,回到标题问题:Chrome和Android浏览器能够通过“intent://”链接打开应用程序 - 是否有任何方法,使用JavaScript或类似的方法,来检测这种支持?