ios - ¿Cuál es el esquema de URL personalizado de Mobile Safari?
mobile-safari url-scheme (2)
Esta pregunta ya tiene una respuesta aquí:
- Abra Mobile Safari desde un enlace en un WebView 5 respuestas
Los esquemas URL de iOS permiten a los sitios web lanzar aplicaciones como las siguientes:
-
twitter://timeline
lanza Twitter -
googlechrome://google.com
lanza Chrome -
fb://root
lanza Facebook -
______________
lanza Safari? (nohttp://
, ya que Safari no se iniciará desdeUIWebView
)
¿Qué esquema de url personalizado activa el lanzamiento de Safari (incluso desde dentro de UIWebView
otra aplicación)?
Para aclarar, no estoy buscando [[UIApplication sharedApplication] openURL: request.URL];
En cambio, estoy buscando cómo un sitio web puede permitir que un usuario inicie Mobile Safari desde el UIWebView
de otra aplicación (Google Chrome, Twitter, etc.).
Ejemplo de enlaces HTML que abren otras aplicaciones:
<a href="twitter://timeline">Open Twitter</a>
<a href="googlechrome://google.com">Open site in Chrome</a>
<a href="fb://root">Open Facebook</a>
Estoy buscando algo similar a estos ejemplos que no funcionan:
<a href="safari://google.com">Open Safari [Doesn''t work]</a>
<a href="webkit://google.com">Open Webkit [Doesn''t work]</a>
Aquí hay un jsFiddle de lo mismo: http://jsfiddle.net/gXLjF/9/embedded/result/
Intenta abrir http://jsfiddle.net/gXLjF/9/embedded/result/ en iOS Google Chrome y abrir Safari con los enlaces.
En cuanto a cualquier navegador web, http://someurl.com
y https://someurl.com
.
No hay esquema de URL de Safari. Sin embargo, si crea uno y lo utiliza en su html, puede verificarlo.
Implementar el método webView:shouldStartLoadWithRequest:navigationType:
Devuelva "NO" a las solicitudes que desee desviar al safari móvil. Llame a UIApplication
openURL
con la URL de la solicitud.
Algo como esto:
- (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;
}