我有一个可用于Android和iPhone的移动应用程序。为此我有一个网站,我有一个javascript方法,检查用户是从移动设备或其他人访问该网站。如果它是移动设备,我正在调用我安装的移动应用程序,如果它没有安装或者它不是移动设备,我会重定向到相应的应用程序商店(这是通过两个按钮完成的,一个用于android,一个用于iPhone, onclick我称这种方法)。我添加了以下方法
function redirectToApplication(appStoreUrl,mobileAppInvokeUrl){
setTimeout(function () { window.location = appStoreUrl; }, 15);
if(isMobile()){
window.location = mobileAppInvokeUrl;
}
}
我的mobileApp Invoke Url看起来像这样
myapp://app
这似乎对iPhone很好。在Android中,它适用于Chrome,Firefox和Opera。但是这个应用程序似乎并没有在Android默认浏览器应用程序(名为浏览器。这不是Chrome)中工作。在该应用程序中,它尝试转到“http://myapp://app”并说找不到页面。我找不到解决这个问题的方法,因为我找不到这个问题的原因。
此浏览器的标识符在
下面提供Mozilla/5.0 (Linux; U; Android x.x; Build/xx)
AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari 530/17
这是一个常见问题,是否有解决此问题的方法。 提前致谢
答案 0 :(得分:0)
(完全披露,我目前是分公司的工程师)
嘿Visahan,
这是Branch links为你做的事。我们完全按照您的内容进行操作,这意味着如果用户已经拥有您的应用程序,则点击时会将用户链接到您的应用程序,或者如果他们没有,则将其带到相应的应用程序商店。
我们基本上格式化一个意图字符串,并在浏览器中设置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;
这允许我们为指定的浏览器创建一个意图字符串,因为它们遵循意图字符串模型。我们当然对某些用户代理和浏览器有一些自定义逻辑,但这是它的要点。