Javascript Android旧浏览器未深度链接移动应用程序

Javascript Android旧浏览器未深度链接移动应用程序,javascript,android,browser,deep-linking,Javascript,Android,Browser,Deep Linking,我有一个适用于Android和IPhone的移动应用程序。为此,我有一个网站,我有一个javascript方法来检查用户是否从移动设备或其他设备访问该网站。如果它是一个移动设备,我将调用我已安装的移动应用程序,如果它未安装或不是移动设备,我将重定向到相应的应用程序商店(这是通过两个按钮完成的,一个用于android,一个用于iPhone,单击我称之为此方法)。我添加了下面的方法 function redirectToApplication(appStoreUrl,mobileAppInvokeU

我有一个适用于Android和IPhone的移动应用程序。为此,我有一个网站,我有一个javascript方法来检查用户是否从移动设备或其他设备访问该网站。如果它是一个移动设备,我将调用我已安装的移动应用程序,如果它未安装或不是移动设备,我将重定向到相应的应用程序商店(这是通过两个按钮完成的,一个用于android,一个用于iPhone,单击我称之为此方法)。我添加了下面的方法

function redirectToApplication(appStoreUrl,mobileAppInvokeUrl){
 setTimeout(function () { window.location = appStoreUrl; }, 15);
 if(isMobile()){
    window.location = mobileAppInvokeUrl;
 }

}
我的mobileApp调用Url如下所示

myapp://app
这对IPhone来说似乎效果不错。在安卓系统中,它可以很好地应用于Chrome、Firefox和Opera。但该应用程序似乎无法在android默认浏览器应用程序(名为browser,这不是Chrome)中运行。在该应用程序中,它尝试转到“”,并表示找不到页面。我找不到这个问题的解决方案,因为我找不到这个问题的原因

下面提供了此浏览器的标识符

Mozilla/5.0 (Linux; U; Android x.x; Build/xx)
AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari 530/17
这是一个常见问题吗?是否有解决此问题的方法。 提前感谢

(完全公开,我目前是分公司的工程师)

嘿,维萨汉

这是为你做的事。我们所做的正是您构建的,这意味着我们在单击“将用户带到您的应用程序”(如果该用户已经拥有您的应用程序)时的链接,或者如果该用户没有,我们会将其带到相应的应用程序商店

我们基本上格式化一个意图字符串,并在浏览器中设置document.location变量,以将用户交付到他们的应用程序

具体来说,每当有人在Android上点击我们的客户端JS时,我们都会这样做:

var intentString = "intent://" + a + "#Intent;scheme=" + b.substring(0, b.length - 3) + ";package=";
if (!e || !e.length) {
    // id is package name of your Android app
    intentString = intentString + d.substring(d.indexOf('?id=') + 4, d.length) + ";";
} else {
    intentString = intentString + e + ";";
}
if (f && f.length) {
    // fallback URL incase app isn't on phone
    intentString = intentString + "S.browser_fallback_url=" + encodeURIComponent(f) + ";";
}
intentString = intentString + "end";
document.location = intentString;
这允许我们为指定的浏览器创建一个意图字符串,因为它们遵循意图字符串模型。当然,对于某些用户代理和浏览器,我们有一些自定义逻辑,但这就是它的要点