Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从链接启动应用程序,如果没有应用程序,则转到从web下载应用程序_Javascript_Mobile_Web_Hyperlink_Launch - Fatal编程技术网

Javascript 从链接启动应用程序,如果没有应用程序,则转到从web下载应用程序

Javascript 从链接启动应用程序,如果没有应用程序,则转到从web下载应用程序,javascript,mobile,web,hyperlink,launch,Javascript,Mobile,Web,Hyperlink,Launch,因此,我希望在网页登陆时启动一个移动应用程序。我已经看到了这一点,一切都很好(以Facebook和Pandora为例,参见下面的代码)。但我正在寻找一种逻辑检查,根据应用程序的成功或失败启动,将用户路由到一种或另一种方式。在以前的解决方案中提到,您不能使用链接检查用户的移动设备,以查看是否安装了应用程序,但我一直认为,可能有一种方法可以查看用户的应用程序是否在事件发生后成功启动,并基于此发送它们 使用下面的代码,如果应用程序启动,网页就会消失(当应用程序占据中心舞台时消失在背景中)。但是,如果移

因此,我希望在网页登陆时启动一个移动应用程序。我已经看到了这一点,一切都很好(以Facebook和Pandora为例,参见下面的代码)。但我正在寻找一种逻辑检查,根据应用程序的成功或失败启动,将用户路由到一种或另一种方式。在以前的解决方案中提到,您不能使用链接检查用户的移动设备,以查看是否安装了应用程序,但我一直认为,可能有一种方法可以查看用户的应用程序是否在事件发生后成功启动,并基于此发送它们

使用下面的代码,如果应用程序启动,网页就会消失(当应用程序占据中心舞台时消失在背景中)。但是,如果移动设备上没有安装该应用程序,则网页将保持不动,您将收到一个错误(无法立即回忆出哪个错误)。但在我看来,收到这个错误应该能够触发重新路由到您选择的特定URL。不是在服务器级别,而是在代码级别。换句话说。。。如果应用程序启动,则将。。。享受吧!但如果页面加载时出现错误,则会立即重定向到苹果或谷歌上的应用程序下载页面(取决于检测到的操作系统)

有人对如何做到这一点有什么建议吗?基本上是一段代码,用于查找触发错误并对此作出反应,作为a)从页面加载启动应用程序(链接)B)在浏览器中打开应用程序商店以下载应用程序(如果应用程序未成功启动)

这是我第一次进入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>
//

您所说的是应用程序链接方面的延迟深度链接。如果你正在编写一个应用程序,想要利用它,这里有一些指南。总之,对于所有场景,都有一个非常简单的“滚动您自己的”实现,它与您正在尝试的类似

()


window.onload=函数(){
//您的应用程序的深层链接位于此处
document.getElementById(“l”).src=“我的应用程序:/”;
setTimeout(函数(){
//应用商店的链接应该放在这里——只有深层链接失败时才会触发
window.location=”https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
}, 500);
};

正如上面的评论员所说,使用iframe,这样即使window.location失败,您也可以继续处理代码。然后,设置一个具有合理回退时间的简单的设置超时。您不需要捕获任何错误消息或响应头。如果应用程序没有启动,那么网站会启动。

只是想添加,因为您需要a)从链接启动应用程序,失败后B)到商店下载应用程序

作为一个可以使用的跨平台解决方案,我建议您尝试Firebase动态链接(在Android和iOS上都可以使用)及其免费版本,而不是使用自己的解决方案

它还可以为你的应用程序提供链接信息,比如如果你在链接中输入一个文章ID(来自你的新闻网站示例),那么应用程序可以在启动时加载该文章,并且即使用户必须从商店安装应用程序,它也会持续存在,当启动时,它将打开你在链接中指定的文章

此外,动态链接可以跨应用程序安装工作:如果用户在iOS或Android上打开动态链接,但没有安装您的应用程序,则会提示用户安装;然后,在安装后,您的应用程序启动并可以访问该链接

只需很少的代码,你就可以为用户添加这样一种能力,即用户可以单击移动web上的链接,并被带到应用程序中的相应页面,即使他们必须先到应用程序商店或Google Play商店进行安装


我认为您应该在隐藏的iframe上使用自定义协议设置位置,以便在重定向到应用程序无效时,JavaScript将继续执行:太棒了。我也在想同样的事情——如果没有被期望的应用程序打开成功(如果我理解正确的话)打断,iframe基本上会超时并重定向。我会朝那个方向看,但到目前为止看起来很有希望。谢谢你的链接,谢谢你,詹姆斯。我还没有在移动设备上测试过,但我已经在Mac OS Catalina+Chrome上试过了(请看,我也需要它在Windows/MacOS…和Android/iOS上工作)。如果应用程序未注册,如果重定向正确,但已注册,则会短暂显示一个弹出窗口,单击以打开已注册的应用程序,并立即再次关闭它,然后在我有时间打开应用程序之前重定向到下载页:(嗯,听起来应用程序确认弹出窗口不再阻止设置的超时。好的……备选:(iOS通用链接方法)和(Android应用程序链接)