iPhone浏览器:检查是否从浏览器安装了iPhone应用程序

And*_*i V 17 browser iphone

我有一个网页,我有Button打开应用程序(如果已安装)或指向App Store,如果没有安装应用程序.如果安装了App,它都可以工作(我打电话给"MYAPP://").但是,如果未安装应用程序,Safari会显示错误消息"无法打开URL",就是这样.有没有办法从JScript中禁用该消息,或者是否有其他方法可以从JScript中找到安装了应用程序(而不是点击应用程序URL)?

致MODERATOR:我看到有人问过类似的问题,而主持人错误地将其标记为重复.请理解该问题具体是关于从浏览器中执行此操作.

在这里找到了一些合适的解

顺便说一句,如果有人对如何为Android做同样的事情感兴趣,这里是代码.我们正在使用Dojo库:

  dojo.io.iframe.send({
    url: "yourApp://foo/bar",
    load: function(resp) {
      // nothing to do since it will automagically open App
    },
    error: function () {
      window.location = "go to Android market";
    }
  });
Run Code Online (Sandbox Code Playgroud)

st.*_*ick 14

分支机构,我们使用下面代码的形式 - 请注意,iframe适用于更多浏览器.只需在您的应用的URI和App Store链接中替换即可.顺便说一句,如果他们没有安装应用程序,使用iframe会使错误无效.这很棒!

<!DOCTYPE html>
<html>
    <body>
        <script type="text/javascript">
            window.onload = function() {
                // Deep link to your app goes here
                document.getElementById("l").src = "my_app://";

                setTimeout(function() {
                    // Link to the App Store should go here -- only fires if deep link fails                
                    window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
                }, 500);
            };
        </script>
        <iframe id="l" width="1" height="1" style="visibility:hidden"></iframe>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果其他人有更好的解决方案来检测URI方案调用是否实际失败,请发布!我没见过一个,我花了很多时间看.所有现有解决方案仅依赖于仍在页面上的用户和setTimeout触发.

  • 请注意,我们发现,现在这在iOS 9上也不起作用。您无法使用iframe,因此无法隐藏错误消息。但是,您可以使用新的通用链接。 (2认同)

Cha*_*bot 0

我认为您仍然可以使用应用程序网址作为测试。尝试将它包裹成一个try...catch块,

try {
  //run code that normally breaks the script or throws error
}
catch(e) {
  //do nothing
}
Run Code Online (Sandbox Code Playgroud)