How can I open an external link in Safari not the app's UIWebView?

Lee TaylorMatthew Levine提出了一个问题:How can I open an external link in Safari not the app's UIWebView?,或许与您遇到的问题类似。

回答者OmatyTitouan de Bailleul给出了该问题的处理方式:

If the links you want to open in safari all contain a common string, you can use the next piece of code.

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    NSURL *url = [request URL];

    // Intercept the external http requests and forward to
    // Otherwise forward to the PhoneGap WebView
    if ([[url scheme] isEqualToString:@"SCHEME"]) {
        [[UIApplication sharedApplication] openURL:url];
        return NO;
    else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];

This code placed in the AppDelegate.m will open all URL that use the specified SCHEME in Safari.

I'm afraid that is all I could come up with.

Hope this helps


The code should be placed in the MainViewControler, at least for cordova 2.2.0.

The method is initially commented. I had to use it to redirect Google maps links :

NSRange isGoogleMaps = [[url absoluteString] rangeOfString:@"" options:NSCaseInsensitiveSearch];
NSRange isGoogleTerms = [[url absoluteString] rangeOfString:@"terms_maps.html" options:NSCaseInsensitiveSearch];

if(isGoogleMaps.location != NSNotFound || isGoogleTerms.location != NSNotFound ) {
        [[UIApplication sharedApplication] openURL:url];
       return NO;
    return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];