Ios 什么是移动Safari';s自定义URL方案?

Ios 什么是移动Safari';s自定义URL方案?,ios,mobile-safari,url-scheme,Ios,Mobile Safari,Url Scheme,iOS URL方案允许网站启动以下应用程序: twitter://timeline发布推特 googlechrome://google.com推出Chrome浏览器 fb://root启动Facebook \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?(不是http://,因为Safari不会从UIWebView启动) 什么自定义url方案触发Safari启动(

iOS URL方案允许网站启动以下应用程序:

  • twitter://timeline
    发布推特
  • googlechrome://google.com
    推出Chrome浏览器
  • fb://root
    启动Facebook
  • \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?(不是
    http://
    ,因为Safari不会从
    UIWebView
    启动)
什么自定义url方案触发Safari启动(即使是从另一个应用程序的
UIWebView
)中启动

为了澄清,我不是在寻找
[[UIApplication-sharedApplication]openURL:request.URL]

相反,我在寻找一个网站如何允许用户从另一个应用程序(Google Chrome、Twitter等)的
UIWebView
中启动Mobile 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>

这里有一个相同的例子:


尝试在iOS Google Chrome中打开,并使用链接打开Safari。

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

实现
UIWebViewDelegate
方法
webView:shouldStartLoadWithRequest:navigationType:
。对于要分流到mobile safari的请求,返回“否”。使用请求的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;
}

启动Safari的唯一方法是使用
UIApplication openURL:
并传递http或https URL。这是在应用程序中使用
UIWebView
。这与启动mobile Safari正好相反。当您使用
openURL
@Adam时,默认情况下,iOS上的所有http URL都会在mobile Safari中打开,除非是从
UIWebView
中的另一个应用程序启动。您找到了解决方案吗?我在Facebook inApp浏览器上也遇到了类似的问题,它破坏了我的PayPal结账。。。。所以你不可能在网上用这个。例如,如果我想允许用户从应用程序内的UIWebView进入Mobile Safari。您是否知道
UIWebView
s是否支持
x-callback-url
?我一直在读关于在不同应用程序之间使用这种切换的黑客的文章。我不是在听你的问题。这是为了突破UIWebView进入Mobile Safari。不我不知道x-callback-url。是的,上面是用于在您控制的应用程序(即您是开发人员)中打开UIWebView的。但这对允许用户突破框架体验的网站不起作用(比如在Twitter的应用程序中——一个他们不控制其源代码的应用程序)。@Ryan你找到解决方法了吗?