首页 文章

什么是Mobile Safari的自定义URL方案? [重复]

提问于
浏览
27

这个问题在这里已有答案:

iOS URL Schemes允许网站启动这样的应用程序:

  • twitter://timeline 推出Twitter

  • googlechrome://google.com 启动Chrome

  • fb://root 推出Facebook

  • ______________ 推出Safari? (不是 http:// ,因为Safari不会从 UIWebView 启动)

什么自定义URL方案触发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>

这是jsFiddle的相同:http://jsfiddle.net/gXLjF/9/embedded/result/

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

2 回答

  • 2

    没有Safari URL方案 . 如果你制作一个并在你的HTML中使用它,你可以检查它 .

    实现 UIWebViewDelegate 方法 webView:shouldStartLoadWithRequest:navigationType: . 对于要分流到移动版Safari的请求,请返回'NO' . 使用请求的URL调用 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;
    }
    
  • -3

    对于任何Web浏览器, http://someurl.comhttps://someurl.com .

相关问题