如何定义以 http ios7 开头的 url 方案

How to define url schemes starting with http ios7

我可以定义像 myapp 这样的自定义方案,这样第三个应用程序就可以将像 myapp://mypage.com 这样的链接重定向到我的应用程序(如果用户安装了它)。但如果用户也尝试打开 http://mysite/mypage.com 之类的链接,我希望第三个应用程序打开我的应用程序。

现在我们可以看到当我们输入如下链接时,safari 会打开 yourtube:

http://www.youtube.com/watch?v=WZH30T99MaM

或者如果我们输入如下链接,地图应用程序将打开:

http://maps.google.com/maps.......

那么,如果用户输入以下内容,我该如何定义第三方应用程序打开我的应用程序的自定义方案:

http://a.myapp.com

简答:没有服务器支持就不行。 Apple 使用第三方应用程序无法使用的技巧来重定向地图和 Youtube 等 HTTP URL。

唯一可以做到这一点的方法是在 http://a.myapp.com 设置一个重定向到 myapp://

的网络服务器

可能的解决方法是,注册自定义 URL 方案,然后在站点起始页的 HTML/JS 代码中检查浏览器代理是否为 Mobile Safari 并将其转发到URL 使用自定义方案。

您还可以检查应用程序是否未安装并重定向到 AppStore,只需在超时后打开 AppStore link,因此如果重定向尝试自定义 URL 方案 link去 App Store 失败。

<script type="text/javascript">
var app = {
    isSafariMobile: function () {
       return navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/)
    },
    launchApp: function() {
       window.location.replace("myapp://");
       this.timer = setTimeout(this.openAppStore, 1000);
    },
    openAppStore: function() {
       window.location.replace("https://itunes.apple.com/app/Myapp");
    }
};

if (app.isSafariMobile()){
  app.launchApp();
}

</script>

更新: Safari 检测方法可能会略有调整,ios chrome 应用程序也可以通过此代码检测为 Safari,因为它有iPhone.

上其 UserAgent 字符串中的 WebKit