【发布时间】:2015-06-28 16:43:59
【问题描述】:
所以我希望在登陆网页时启动移动应用程序。我已经看到了这一切,一切都很好(参见下面的代码,以 Facebook 和 Pandora 为例)。但我正在寻找一种逻辑检查来根据应用程序的成功或不成功启动以一种或另一种方式路由用户。在之前的解决方案中说过,您不能使用链接来检查用户的移动设备以查看是否安装了应用程序,但我一直认为可能有一种方法可以查看用户的应用程序是否在之后成功启动-事实并基于此路由它们。
使用下面的代码,如果应用程序启动,网页就会消失,如果你愿意(在应用程序占据中心位置时消失在后台)。但是,如果该应用程序没有安装在移动设备上,那么网页会保持打开状态并且您会收到错误消息(无法立即回忆是哪个错误)。但在我看来,收到此错误应该能够触发重新路由到您选择的特定 URL。不是在服务器级别,而是在代码级别。换句话说......如果应用程序启动,那么恭喜......享受!但是,如果页面加载时出现错误,它会立即重定向到 Apple 或 Google 上的应用下载页面(取决于检测到的操作系统)。
有人对如何实现这一点有建议吗?本质上是一段代码,它正在寻找触发错误并对此做出反应,作为 A)从页面加载(链接)启动应用程序 B)在浏览器中打开应用程序商店以下载应用程序(如果应用程序不是) t 成功启动。
这是我第一次涉足 Stack,但多年来我发现社区非常有帮助。
<script type="text/javascript"> // <![CDATA[
var isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i);
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
}
};
if ( isMobile.Android() ) {
document.location.href = "fb://profile";
}
else if(isMobile.iOS())
{
document.location.href="pandora://";
}
</script>
【问题讨论】:
-
我认为您应该在隐藏的 iframe 上使用自定义协议设置位置,这样如果重定向到应用程序不起作用,JavaScript 将继续执行:gist.github.com/pulletsforever/2662899
-
太棒了。我在想同样的事情——如果没有被所需的应用程序打开成功中断(如果我理解正确的话),iframe 基本上会超时并重定向。我会朝那个方向看,但到目前为止看起来很有希望。感谢 Pawel 的链接。
标签: javascript mobile web hyperlink launch