2012-04-30 3 views
21

Есть ли схема URI для открытия Mobile Safari для определенного URL-адреса?Откройте Mobile Safari из ссылки в WebView

например,

<a href="safari://open_url/?url=google.com">Open Google in Safari</a> 
+0

Были ли вы когда-нибудь удалось найти способ сделать это? –

+0

Я тоже ищу это. – CodeMilian

+0

Вы найдете способ обойти это? –

ответ

4

Update: Так, по прошивкой 6.0.2, есть еще не URL схемы специфичны для MobileSafari (см. Ниже) Тем не менее, Federico Viticci опубликовал interesting hack, который позволит вам вызвать Safari из Chrome для iOS. Это не так функционально, как букмарклет Chrome-to-Safari, но он показывает, что можно запустить MobileSafari из Chrome для iOS.

Oдин ответ: Оказалось, что вы не можете открыть ссылку в Safari, используя только схему URI. Гиперссылки в других приложениях можно открыть в сафари, используя openURL (см. Другие ответы), но для самой MobileSafari нет схемы (которая вам понадобится, если вам нужно открыть ссылку в Safari, используя гиперссылку в Chrome или Opera для iOS).

Google Chrome имеет следующие две схемы URI: googlechrome:// и googlechromes:// (для HTTPS), которые работают так же, как любое другое приложение конкретной схемы (например, dayone://, things:// или sms://).

3

Попробуйте это:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
+0

Мне нужна ссылка в HTML, а не код клиентского приложения. Обновление вопроса будет более ясным - извините Саймона! –

+1

Я думаю, что Кирк ищет определенную схему URL (аналогичную схеме URL, используемой для открытия предпочтений до 5.1: '[NSURL URLWithString: @" prefs: root = LOCATION_SERVICES "]];'). –

+0

@Kirk Я только что отредактировал свой ответ, если вы откроете URL-адрес с помощью схемы HTTP, он будет использовать мобильное сафари. –

3

Хорошо, я думаю, я понимаю, что вы просите.

Имейте класс, реализующий протокол UIWebViewDelegate. Внедрение метода

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

Этот метод вызывается всякий раз, когда пользователь нажимает ссылку в вашем веб-просмотре. Вы можете получить URL-адрес, который пользователь нажал, чтобы проверить параметр request. Затем вы можете перехватить любые ссылки, которые хотите открыть в мобильном Safari, а не внутри вашего веб-браузера, а затем вызвать -openURL: в общем приложении, как и в моем другом ответе.

[[UIApplication sharedApplication] openURL:URLFromRequest]; 
0

Вы также можете использовать WebKit Javascript мост https://github.com/marcuswestin/WebViewJavascriptBridge

Это позволяет отправлять сообщения из JavaScript в Xcode. Я использую это, чтобы закрыть WebView со страницы HTML:

self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView handler:^(id data, WVJBResponseCallback responseCallback) { 
      NSLog(@"Received message from javascript: %@", data); 
      if ([data isEqual:@"closewin!"]) 
       [self dismissModal]; 
     }]; 

но вы также можете использовать это, чтобы перейти на сафари или что вы хотите

Смежные вопросы