2013-10-10 13 views
6

Ich baue eine iOS App mit Cordova 3.1. Ich habe einen Link, den ich gerne in Safari öffnen würde. Ich habe das Plugin org.apache.cordova.inappbrowser installiert und es funktionierte gut auf meinem iPhone (iOS 7) und auf dem Simulator (iOS5; iOS6.1; iOS7), aber wenn ich (iOS6) auf allen Geräten versuche es nicht ' t arbeiten.Cordova 3.1 Link in Safari auf iOS6 öffnen

Weiß jemand, wie man das repariert oder es auf einem echten Gerät mit iOS6 ausprobiert? Ich verwende diesen Code den Link zu öffnen:

window.open('http://www.google.nl', '_system'); 
+0

Haben Sie sich schon einmal [this] (http://stackoverflow.com/questions/17887348/phonegap-open-link-in-browser) angesehen? –

+0

Ja, ich habe alle Methoden ausprobiert, die ich bei Google finden konnte. – Hugo

+0

Was passiert, wenn Sie Ihren Link von einem hartcodierten '' HTML-Tag öffnen? – htulipe

Antwort

3

gut Ich habe dies durch native Seite (Objective C)

diese Methode

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = [request URL]; 
    NSString *str = url.absoluteString; 
    NSRange range = [str rangeOfString:@"http://"]; 
    NSRange range1 = [str rangeOfString:@"https://"]; 

    if (range.location != NSNotFound || range1.location != NSNotFound) { 
     [[UIApplication sharedApplication] openURL:url]; 
     return NO; 
    } 
    else { 
     return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; 
    } 
} 
in 'MainViewController.m' Add implementiert

Dieser kümmert sich sowohl um "http" und "https" Link für iOS6 & iOS7, und öffnet den Link im Standard-Browser des Geräts.

0

Ich weiß, das ist eine alte Frage, aber ich habe es auch schon gefunden und habe nur ein kleines Plugin geschrieben, um damit zu helfen. Siddharthas Antwort ist fast richtig, aber als ich sie benutzt habe, hat sie alle Web-Anfragen abgefangen, einschließlich der an meine index.html, und dies schien meine App in Safari zu verschieben. Was ich brauchte, war eine Möglichkeit, nur explizite Anfragen zu bearbeiten, sodass ich in Safari bestimmte (externe) URLs öffnen konnte.

Es gibt viele ähnliche Fragen über Phonegap, die spezielle Behandlung für window.open mit _system einzubetten scheint. Das wäre nett, aber Cordova hat diese Funktionalität nicht.

Am Ende schrieb ich eine small plugin, die genügend Objective C einbettet (eng an Siddharthas Antwort angelehnt), aber aufgrund der Magie von Plugins kann sie auf Anfrage unter Verwendung von cordova.exec ausgeführt werden. Ich würde es lieben, in window.open zu patchen, um die gleiche Funktionalität wie Phonegap zu erreichen, aber das wird für einen anderen Tag sein, und es beeinflusst diese Antwort nicht wirklich.

So weit ich im modernen Cordova sagen kann, ist dies die einzig gangbare Strategie.

Verwandte Themen