2016-11-27 2 views
2

Ich arbeite gerade in einem iOS-Projekt, wo ich überprüfen muss, ob mein Telefon mit dem Internet verbunden ist (mobile Daten/WLAN) oder nicht. Ich benutze die Erreichbarkeitsklasse, die nur die Verfügbarkeit der Netzwerkverbindung überprüft, nehme aber ein Szenario an, in dem kein Kontostand in meinem Telefon vorhanden ist. In diesem Fall würde ich nicht auf das Internet zugreifen können, aber die Erreichbarkeit zeigt mir, dass das Internet über das Mobilfunknetz erreichbar ist, da die Datenverbindung besteht, obwohl ich nicht auf die Seite zugreifen kann.Wie kann ich überprüfen, ob das Internet aktiv ist (Überprüfung der Netzwerkverfügbarkeit und Barrierefreiheit der Webseite) in iOS?

Wie kann ich das Problem beheben?

+1

Mögliches Duplikat von [Wie für ein aktives Internet überprüfen Verbindung auf iOS oder OSX?] (http://stackoverflow.com/questions/1083701/how-to-check-for-an-active-internet-connection-on-ios-or-osx) – jxmorris12

+0

Ich habe dieses Thema satt. Führen Sie eine Suche aus, albern. –

+0

check out meine Antwort –

Antwort

3

Sie können mit Verbindung überprüfen: didReceiveResponse:

 NSString *[email protected]"yourUrl"; 
     NSURL *url=[NSURL URLWithString:urlString]; 
     NSURLRequest *request=[NSURLRequest requestWithURL:url]; 
     NSURLConnection *connection=[NSURLConnection connectionWithRequest:request delegate:self]; 
     [connection start]; 

     -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
     { 
     NSLog(@"%@",response); 
     [connection cancel]; 
     NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
     int code = (int)[httpResponse statusCode]; 
     if (code == 200) { 
      NSLog(@"File exists"); 
     } 
     else if(code == 404) 
     { 
      NSLog(@"File not exist"); 
     } 
     } 
     -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
     { 
     NSLog(@"File not exist"); 
     } 
+0

Ich habe überprüft, meine mobilen Daten zu halten, obwohl es kein Gleichgewicht gibt. So sollte es "Datei nicht existieren" drucken. Es druckt aber braucht viel Zeit. Wie kann ich die Reaktionszeit oder das Zeitintervall wie 5 Sekunden reduzieren? Und wenn diese Zeit vorbei ist, wie kann ich das überprüfen? –

+0

Wenn Sie NSURLRequest erstellen, können Sie timeoutInterval angeben. NSURLRequest * Anforderung = [NSURLRequest requestWithURL: [NSURL URLWithString: Verknüpfung] cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 5.0]; –

1

Ein anderes Beispiel wäre, wenn Sie nicht ordnungsgemäß mit einem Wifi-Netzwerk verbunden sind - Ihr Telefon hat eine gute Verbindung, aber keine Erlaubnis, auf Seiten im Internet zuzugreifen.

In diesem Fall wäre die einzige Methode zum Erkennen, eine Webanforderung an eine zuverlässige Site zu senden (z. B. www.google.com). Wenn Ihre Anfrage an diese Quelle nach einer bestimmten Zeitspanne (z. B. fünf Sekunden) abläuft, können Sie sicher feststellen, dass das Telefon Konnektivitätsprobleme aufweist.

0

können Sie die Internetverbindung überprüfen

NSURL *scriptUrl = [NSURL URLWithString:@"http://www.google.com/"]; 

NSData *data = [NSData dataWithContentsOfURL:scriptUrl]; 
//Manual timeout of 20 seconds 
[NSThread sleepForTimeInterval: 20]; 
if (data) 
    NSLog(@"Device is connected to the Internet"); 
else 
    NSLog(@"Device is not connected to the Internet"); 

diesen Siehe link

Verwandte Themen