gpt4 book ai didi

javascript - Android 旧浏览器无法深度链接移动应用程序

转载 作者:行者123 更新时间:2023-11-28 07:20:59 25 4
gpt4 key购买 nike

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

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

}

我的 mobileApp 调用 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

这是一个常见问题吗?有解决方案吗?提前致谢

最佳答案

(全面披露,我目前是 Branch 的工程师)

嘿维萨汉,

这是东西Branch links为你做。我们完全按照您所构建的方式进行操作,这意味着如果用户已经拥有您的应用程序,我们的链接会在用户单击后将其带到您的应用程序,如果没有,我们会将其带到相应的应用程序商店。

我们基本上格式化一个 Intent 字符串并在浏览器内设置 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;

这允许我们为指定的浏览器创建一个 Intent 字符串,因为它们遵循 Intent 字符串模型。当然,我们对某些用户代理和浏览器有一些自定义逻辑,但这就是它的要点。

关于javascript - Android 旧浏览器无法深度链接移动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com