2015-09-22 4 views
7

Io uso UIWebView nella mia app e tutto ha funzionato bene nel simulatore Xcode4,5,6. ma non per il simulatore Xcode 7, non so perché, non vi è alcun avviso o errore nel simulatore e lo schermo mostra solo una pagina vuota. Mi aiuti per favore. Grazie.Xcode 7 UIWebView non carica l'url

#import "IndexViewController.h" 

@interface IndexViewController() 

@end 

@implementation IndexViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *urlString = nil; 
    NSString *languageCode = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    if ([languageCode isEqualToString:@"zh-Hans"]) { 
     urlString = @"http://www.originoftime.net/index-cn"; 
    }else if ([languageCode isEqualToString:@"zh-Hant"]) { 
     urlString = @"http://www.originoftime.net/index-cn"; 
    }else{ 
     urlString = @"http://www.originoftime.net/index-en"; 
    } 
    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 

    NSURLRequest *urlrequest = [NSURLRequest requestWithURL:url]; 

    [_Index loadRequest:urlrequest]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

risposta

12

Xcode 7 con iOS9 ora obbligano a non utilizzare la chiamata HTTP, ma quelle HTTPS.

questo è un punto di sicurezza migliorato in AppTransportSecurity.

Prova questo:

  • Vai al tuo info.plist
  • aggiungere un dizionario chiamato NSAppTransportSecurity
  • Aggiungere un attributo booleano a questo, chiamati NSAllowsArbitraryLoads
  • passarlo a TRUE

Ricarica la tua app.

Consiglio che se Apple desidera bloccare le chiamate HTTP (non protette) è per una buona ragione. http://www.originoftime.net/index-cn ha uno HTTPS ma il certificato del server sembra essere autofirmato.

fatemi sapere se questo lavoro soluzione per voi

Ciao da Francia

+0

Per maggiori dettagli, vi consiglio di leggere questo articolo completo: [lavorando con Apple App Transport Security] (http: //www.neglectedpotential.com/2015/06/working-with-apples-application-transport-security/) – jlngdt

+0

info grt !! grazie –

+0

Grazie, ora funziona. :) –

1

è possibile realizzare i metodi Web View delegato? In particolare:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 

Se un carico non riesce, questo vi dirà qual è il problema.

Potrebbe essere l'errore relativo al nuovo modello di sicurezza che viene applicato per l'accesso alla rete. È possibile ignorare questo nuovo comportamento aggiungendo quanto segue nel file Info.plist. Basta modificare il codice XML e incolla questo in:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key><true/> 
</dict> 

I cambiamenti sono riassunti qui: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html