2012-09-27 10 views
6

Attualmente stiamo sviluppando un'app mobile utilizzando Cordova/PhoneGap (ultima versione) sia per Android che per iOS. Uno degli aspetti chiave della nostra app è che recupera i dati da diverse origini remote (una delle quali ha un certificato SSL non valido). Dopo aver verificato che tutte le impostazioni di .plist siano impostate correttamente (per la lista bianca dei domini) la nostra app non funziona né in iOS 5 né in 6. Nessun errore mostrato nella console in XCode o Safari - semplicemente muore. L'app Android funziona bene e funziona localmente nei browser web. Quindi, domande di coppia:Cordova/PhoneGap iOS Problemi HTTPS/SSL

Esiste un'impostazione .plist per ignorare i certificati SSL non validi in iOS? Ho visto del codice per farlo in UIWebView ma non siamo sicuri se dovremmo modificare quel codice e rischiare di rompere l'app altrove.

risposta

6

** Modifica 3/13/14 **

L'approccio raccomandato è di installare la CA nel dispositivo: e-mail la CA al dispositivo, toccare il file CA nella e-mail, e l'importazione nella tua area di archiviazione sicura. Ciò consentirà al tuo dispositivo di fidarsi della connessione https senza firma, senza bisogno delle linee di codice mostrate sotto.

Si noti che mentre la soluzione di seguito funziona, non è sicura e non è consigliata. È necessario rimuovere queste righe di codice prima di rilasciare una versione di produzione dell'app. In caso contrario, l'applicazione non verrà resa sicura. Questa soluzione non è consigliata perché le persone potrebbero dimenticarsi di rimuoverlo.

** risposta originale **

Non v'è alcuna impostazione Cordova plist per questo. Per aggirare questo problema in iOS, aggiungi il codice visualizzato di seguito alla fine del tuo file AppDelegate.m.

@implementation NSURLRequest(DataController) 
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
{ 
    return YES; 
} 
@end 

Ho usato questo in diversi progetti in passato e non ho visto effetti collaterali negativi.

Il file AppDelegate.m si trova nella cartella di colore giallo intitolata Classes nel progetto Xcode.

+0

Ti suggerisco di modificare la tua risposta per portare l'ultima parte in cima! Questa è la soluzione migliore: _ "invia la tua CA al tuo dispositivo, tocca il file CA nell'e-mail e importalo nell'area di archiviazione sicura" _. Non l'ho mandato via email, l'ho scaricato dalla mia macchina di sviluppo usando http. – pauloya

+0

@PauloManuelSantos fatto – njtman

+0

Che ne dici di aggiungere un'impostazione definita dall'utente plist basata sulla configurazione di costruzione/destinazione per restituire Sì/No? In questo modo non devi ricordare di rimuovere il codice quando sei pronto per rilasciarlo ... – ganders

Problemi correlati