如何定义从http ios7开始的url方案

如何定义从http ios7开始的url方案,ios,uri,url-scheme,Ios,Uri,Url Scheme,我可以定义自定义方案,如myapp,这样第三个应用程序可以重定向链接,如:myapp://mypage.com到我的应用程序(如果用户安装了它)。但如果用户试图打开http://mysite/mypage.com也是 现在,我们可以看到safari在键入以下链接时打开了yourtube: 或者,如果我们键入以下链接,则会打开地图应用程序: 那么,如果用户类型为: 简短回答:没有服务器支持,您就不能。苹果使用了一些第三方应用程序无法使用的技巧来重定向地图和Youtube等HTTP URL 唯一

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

现在,我们可以看到safari在键入以下链接时打开了yourtube:

或者,如果我们键入以下链接,则会打开地图应用程序:

那么,如果用户类型为:


简短回答:没有服务器支持,您就不能。苹果使用了一些第三方应用程序无法使用的技巧来重定向地图和Youtube等HTTP URL


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

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

您还可以检查应用程序是否未安装并重定向到AppStore,只需打开带超时的AppStore链接,因此,如果重定向到自定义URL方案链接的尝试失败,您可以转到AppStore

<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>

变量应用={
isSafariMobile:函数(){
返回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();
}
更新:Safari检测方法可能会稍微调整,ios chrome应用程序也可能被此代码检测为Safari,因为它在iPhone上的UserAgent字符串中包含WebKit