Mobile Safari を特定の URL で開くための URI スキームはありますか?
例えば、
<a href="safari://open_url/?url=google.com">Open Google in Safari</a>
更新:したがって、iOS 6.0.2の時点では、MobileSafariに固有のURLスキームはまだありません(以下を参照)。ただし、Federico Viticciは、iOS用ChromeからSafariを呼び出すことができる興味深いハックを投稿しました。ChromeからSafariへのブックマークレットほど機能的ではありませんが、ChromeforiOSからMobileSafariを起動できることを示しています。
元の回答:URIスキームだけを使用してSafariでリンクを開くことはできないことがわかりました。他のアプリのハイパーリンクはopenURL
(他の回答を参照)を使用してサファリで開くことができますが、MobileSafari自体のスキームはありません(ChromeまたはiOSのOperaのハイパーリンクを使用してSafariでリンクを開く場合に必要になります)。
Google Chromeには、次の2つのURIスキームがあります。googlechrome://
およびgooglechromes://
(HTTPSの場合)他のアプリ固有のスキーム(、、、、など)と同じように機能dayone://
しthings://
ますsms://
。
OK、私はあなたが求めていることを理解していると思います。
クラスにUIWebViewDelegateプロトコルを実装させます。メソッドを実装する
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
このメソッドは、ユーザーが Web ビューのリンクをクリックするたびに呼び出されます。パラメータを調べることで、ユーザーがクリックした URL を取得できrequest
ます。次に、webView 内ではなくモバイル Safari で開きたいリンクをインターセプト-openURL:
し、他の回答のように共有アプリケーションを呼び出すことができます。
[[UIApplication sharedApplication] openURL:URLFromRequest];
これを試して:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com/"]];
Webkit javascript ブリッジhttps://github.com/marcuswestin/WebViewJavascriptBridgeを使用することもできます
これにより、javascript から xcode にメッセージを送信できます。これを使用して、html ページから webview を閉じます。
self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"Received message from javascript: %@", data);
if ([data isEqual:@"closewin!"])
[self dismissModal];
}];
ただし、これを使用して、サファリや必要なものにジャンプすることもできます