les schémas d'URL iOS permettent aux sites Web de lancer des applications comme ceci:
Twitter://timeline
lance Twittergooglechrome://google.com
lance Chromefb://root
lance Facebook______________
lance Safari? (ne pas http://
, puisque Safari ne se lancera pas à partir de UIWebView
)Quel schéma d'URL personnalisé déclenche le lancement de Safari (même à partir du UIWebView
d'une autre application)?
Pour clarifier, je ne cherche pas [[UIApplication sharedApplication] openURL: request.URL];
Au lieu de cela, je cherche comment un site Web peut permettre à un utilisateur de lancer Mobile Safari à partir du UIWebView
d'une autre application (Google Chrome, Twitter, etc.).
Exemples de liens HTML qui ouvrent d'autres applications:
<a href="Twitter://timeline">Open Twitter</a>
<a href="googlechrome://google.com">Open site in Chrome</a>
<a href="fb://root">Open Facebook</a>
Je cherche quelque chose de similaire à ces exemples non fonctionnels:
<a href="safari://google.com">Open Safari [Doesn't work]</a>
<a href="webkit://google.com">Open Webkit [Doesn't work]</a>
Voici un jsFiddle de la même: http://jsfiddle.net/gXLjF/9/embedded/result/
Essayez d'ouvrir cette URL dans iOS Google Chrome et d'ouvrir Safari avec les liens.
Il n'y a pas de schéma d'URL Safari. Si vous en créez un et l'utilisez dans votre html, vous pouvez le vérifier.
Implémentez la méthode UIWebViewDelegate
webView:shouldStartLoadWithRequest:navigationType:
. Renvoyez "NON" pour les demandes que vous souhaitez envoyer au safari mobile. Appelez UIApplication
openURL
avec l'URL de la demande.
Quelque chose comme ça:
- (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;
}