2013-10-10 9 views
6

Sto costruendo un'app iOS con Cordova 3.1. Ho un collegamento che vorrei aprire in Safari. Ho installato il plug-in org.apache.cordova.inappbrowser e ha funzionato bene sul mio iPhone (iOS 7) e sul simulatore (iOS5; iOS6.1; iOS7) ma se provo (iOS6) su tutti i dispositivi non lo fa lavoro.Cordova 3.1 collegamento aperto in Safari su iOS6

Qualcuno sa come risolvere questo problema o provato su un dispositivo reale con iOS6? Sto usando questo codice per aprire il link:

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

Hai già dato un'occhiata a [questo] (http://stackoverflow.com/questions/17887348/phonegap-open-link-in-browser)? –

+0

Sì, ho provato tutti i metodi che ho trovato su Google. – Hugo

+0

Cosa succede se apri il tuo link da un tag HTML '' codificato? – htulipe

risposta

3

ben Ho implementato questo attraverso lato nativo (Objective C)

Aggiungi questo metodo in 'MainViewController.m'

- (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 ]; 
    } 
} 

Questo aspetto interessa sia il collegamento "http" che "https" per iOS6 & iOS7 e apre il collegamento nel browser predefinito del dispositivo.

0

So che questa è una vecchia domanda, ma l'ho incontrata anche io e ho appena scritto un piccolo plugin per aiutarci. La risposta di Siddhartha è quasi giusta, ma quando l'ho usata, ha intercettato tutte le richieste web, comprese quelle per il mio index.html, e questo sembrava spostare la mia app in Safari. Quello di cui avevo bisogno era un modo per gestire solo richieste esplicite, così ho potuto aprire specifici URL (esterni) in Safari.

Ci sono molte domande simili su PhoneGap, che sembra incorporare una gestione speciale per con _system. Sarebbe bello, ma Cordova non ha questa funzionalità.

Alla fine, ho scritto un small plugin che incorpora abbastanza Objective C (strettamente modellato su risposta di Siddhartha), ma a causa della magia di plugin, che può essere eseguito su richiesta, utilizzando cordova.exec. Mi piacerebbe che questo patch in window.open per ottenere le stesse funzionalità di PhoneGap, ma lo sarà per un altro giorno, e non influisce in realtà su questa risposta.

Per quanto posso dire, nella moderna Cordova, questa è l'unica strategia praticabile.

Problemi correlati