iOS URLスキームにより、Webサイトは次のようなアプリを起動できます。
Twitter://timeline
はTwitterを起動しますgooglechrome://google.com
はChromeを起動しますfb://root
はFacebookを起動します______________
はSafariを起動しますか? (SafariはUIWebView
から起動しないため、http://
ではありません)Safariが起動するカスタムURLスキームは何ですか(別のアプリのUIWebView
内からでも)。
明確にするために、私は[[UIApplication sharedApplication] openURL: request.URL];
を探していません
代わりに、Webサイトで、ユーザーが別のアプリ(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:
。モバイルサファリに迂回するリクエストに対して「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;
}