2012-04-30 14 views
21

¿Existe un esquema de URI para abrir Mobile Safari a una URL específica?Abra Mobile Safari desde un enlace en una WebView

por ejemplo,

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

¿Alguna vez capaz de encontrar una manera de hacer esto? –

+0

Estoy buscando esto también. – CodeMilian

+0

Di ¿encuentras una forma de evitar esto? –

Respuesta

4

actualización: Así, a partir de iOS 6.0.2, todavía hay no es un esquema URL específica a MobileSafari (véase más adelante). Sin embargo, Federico Viticci ha publicado un interesting hack que le permitirá llamar a Safari desde Chrome para iOS. No es tan funcional como un bookmarklet de Chrome a Safari, pero sí muestra que es posible lanzar MobileSafari desde Chrome para iOS.

Respuesta original: Resulta que no puede abrir un enlace en Safari usando solo un esquema URI. Los hipervínculos en otras aplicaciones se pueden abrir en safari usando openURL (ver otras respuestas), pero no hay ningún esquema para MobileSafari en sí mismo (que necesitaría si abriera un enlace en Safari usando un hipervínculo en Chrome u Opera para iOS).

Google Chrome tiene las siguientes dos esquemas URI: googlechrome:// y googlechromes:// (para HTTPS) que funciona igual que cualquier otro esquema de aplicación específica (como dayone://, things://, o sms://).

3

Prueba esto:

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

Necesito que el enlace esté en HTML, no en el código de la aplicación del cliente. Actualizando la pregunta para ser más claro - lo siento Simon! –

+1

Creo que Kirk está buscando un esquema de URL específico (similar al esquema de URL utilizado para abrir las preferencias antes de 5.1: '[NSURL URLWithString: @" prefs: root = LOCATION_SERVICES "]];'). –

+0

@Kirk Acabo de editar mi respuesta, si abre una URL con el esquema HTTP, utilizará el safari móvil. –

3

bien, creo que entiendo lo que usted está pidiendo.

Haga que una clase implemente el protocolo UIWebViewDelegate. Poner en práctica el método

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

Este método se llama cuando el usuario hace clic en un enlace en su vista web. Puede obtener la URL en la que el usuario hizo clic para inspeccionar el parámetro request. A continuación, puede interceptar los enlaces que desee abrir en el dispositivo móvil Safari en lugar de dentro de su webView y luego llamar al -openURL: en la aplicación compartida como en mi otra respuesta.

[[UIApplication sharedApplication] openURL:URLFromRequest]; 
0

También puede utilizar el WebKit JavaScript puente https://github.com/marcuswestin/WebViewJavascriptBridge

Esto le permite enviar mensajes de javascript para Xcode. Lo utilizo para cerrar la vista web desde la página HTML:

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

pero también se puede usar esto para saltar a Safari o cualquier cosa que desee

Cuestiones relacionadas