iOS URL方案允许网站像这样启动应用程序:
-
twitter://timeline
推出Twitter -
googlechrome://google.com
启动Chrome -
fb://root
推出Facebook -
______________
启动Safari?(不是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>
下面是一个相同的jsFiddle: http://jsfiddle.net/gXLjF/9/embedded/result/
尝试在iOS Google Chrome中打开此URL,并打开带有链接的Safari。
没有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;
}