如何从Mobile Safari重定向到Native iOS应用程序(如Quora)?

时间:2012-03-13 16:44:40

标签: iphone ios mobile-safari

在我的iPhone上,我注意到如果我使用Google搜索(在Mobile Safari中)并在quora.com上选择结果,结果页面会在我的手机上启动原生Quora应用。

这是怎么做到的?具体来说,它是用户代理的检测和iOS URL方案的使用吗?它可以判断本机应用程序是否已安装和/或重定向到应用程序商店?

3 个答案:

答案 0 :(得分:15)

我在这里回复了我自己的相关问题(但最初是Ruby-on-Rails特定的)问题:Rails: redirect_to 'myapp://' to call iOS app from mobile safari

您可以使用javascript window.location进行重定向。

示例代码:

<html><head>
    <script type="text/javascript">
      var userAgent = window.navigator.userAgent;
      if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) {
        window.location = "myiosapp://"
      }
    </script>
  </head>
  <body>
    Some html page
  </body>
</html>

答案 1 :(得分:5)

只是JS代码的一个小改进,如果没有安装应用程序,它会将用户发送到itunes商店;)

<script type="text/javascript">

    // detect if safari mobile
    function isMobileSafari() {
        return navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/)
    }
    //Launch the element in your app if it's already installed on the phone
    function LaunchApp(){
      window.open("Myapp://TheElementThatIWantToSend","_self");
    };

    if (isMobileSafari()){
        // To avoid the "protocol not supported" alert, fail must open itunes store to dl the app, add a link to your app on the store
        var appstorefail = "https://itunes.apple.com/app/Myapp";
        var loadedAt = +new Date;
        setTimeout(
          function(){
            if (+new Date - loadedAt < 2000){
              window.location = appstorefail;
            }
          }
        ,100);
        LaunchApp()

    }

</script>

答案 2 :(得分:4)

您可以使用由您的应用程序在iOS运行时注册的custom URL scheme触发您的应用程序启动。然后在您的网站上编写代码以检测传入的用户代理,如果检测到iOS,则生成自定义URL而不是常规的URL。