Ich habe gesucht, kann aber keine ähnliche Frage sehen.Manchmal schlägt die Erreichbarkeit manchmal fehl, auch wenn wir eine Internetverbindung haben
Ich habe eine Methode hinzugefügt, um nach dem Beispiel der Erreichbarkeit nach einer Internetverbindung zu suchen. Es funktioniert die meiste Zeit, aber wenn es auf dem iPhone installiert wird, scheitert es oft sogar, wenn ich Internetkonnektivität habe (nur wenn 3G/EDGE - WiFi in Ordnung ist).
Grundsätzlich gibt der folgende Code NO zurück.
Wenn ich zu einer anderen App wechseln, sagen Mail oder Safari, und verbinden, dann zurück zur App wechseln, dann sagt der Code, dass das Internet erreichbar ist. Irgendwie scheint es, als ob es einen "Nudge" braucht.
Wer hat das schon einmal gesehen? Irgendwelche Ideen?
Vielen Dank James
+ (BOOL) doWeHaveInternetConnection{
BOOL success;
// google should always be up right?!
const char *host_name = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Google is reachable: %d", flags);
}else{
NSLog(@"Google is unreachable");
}
return isAvailable;
}
Entschuldigung, ich bin ein bisschen wie ein Noob. Ich habe die Beispiel-Erreichbarkeitsklassen zu meinem Projekt hinzugefügt, kann aber nicht kompilieren. \t Erreichbarkeit * hostReach = [[Erreichbarkeit ErreichbarkeitWithHostName: @ "www.apple.com"] beibehalten]; Funktioniert nicht. Die Methode reachabilityWithHostName kann nicht gefunden werden. ich Zwicken halten werde ... – stoutyhk
dies funktioniert: + (BOOL) doWeHaveInternetConnection2 { \t \t if ([[Erreichbarkeits sharedReachability] internetConnectionStatus] == NotReachable) { \t \t Rückkehr NO; \t} \t sonst \t { \t \t Rückkehr JA; \t} \t } – stoutyhk
dieser Code gibt Ihnen immer "NotConnected" obwohl es verbunden ist. aber sobald es zu "reachabilityChanged" Methode geht, gibt es Ihnen korrekten Status.Also, wie bekomme ich den richtigen Status an erster Stelle? – Nnp