什么是Mobile Safari的自定义URL方案?

时间:2014-03-25 17:36:07

标签: ios mobile-safari url-scheme

iOS URL Schemes允许网站启动类似的应用程序:

  • twitter://timeline推出Twitter
  • googlechrome://google.com启动Chrome
  • fb://root推出Facebook
  • ______________启动Safari? (不是http://,因为Safari不会从UIWebView启动)

哪种自定义网址方案会触发Safari启动(即使是在另一个应用的UIWebView内)?

澄清一点,我不是在寻找[[UIApplication sharedApplication] openURL: request.URL];

相反,我正在寻找一个网站如何允许用户从另一个应用程序(谷歌浏览器,推特等)的UIWebView内启动移动Safari。

弹出打开其他应用的示例HTML链接:

<a href="twitter://timeline">Open Twitter</a>
<a href="googlechrome://google.com">Open site in Chrome</a>
<a href="fb://root">Open Facebook</a>

我正在寻找类似于这些非工作示例的内容:

<a href="safari://google.com">Open Safari [Doesn't work]</a>
<a href="webkit://google.com">Open Webkit [Doesn't work]</a>

以下是相同的jsFiddlehttp://jsfiddle.net/gXLjF/9/embedded/result/

尝试在iOS谷歌浏览器中打开this URL并使用链接打开Safari。

2 个答案:

答案 0 :(得分:2)

没有Safari网址计划。如果你制作一个并在你的HTML中使用它,你可以检查它。

实施UIWebViewDelegate方法webView:shouldStartLoadWithRequest:navigationType:。对于要分流到移动野生动物园的请求,请返回“否”。使用请求的网址UIApplication openURL

这样的事情:

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    // all clicked links!
    if ( navigationType == UIWebViewNavigationTypeLinkClicked )
    {
        [[UIApplication sharedApplication] openURL: request.URL];
        return NO;
    }

    // or, custom URL scheme!
    if ( [request.URL.scheme isEqualToString: @"my-open-in-safari"] )
    {
        // remap back to http.  untested!
        NSURL* url = [NSURL URLWithString: [request.URL.absoluteString stringByReplacingOccurrencesOfString: @"my-open-in-safari" withString: @"http" ]];

        [[UIApplication sharedApplication] openURL: url];
        return NO;
    }

    return YES;
}

答案 1 :(得分:-5)

对于任何网络浏览器http://someurl.comhttps://someurl.com