2008-10-08 3 views
10

Ich habe Apples Reachability-Beispiel in mein eigenes Projekt integriert, damit ich weiß, ob ich eine Netzwerkverbindung habe oder nicht - wenn ich keine Netzwerkverbindung habe, I kümmere dich nicht um Aussendungen und Anfragen. Ich entschied mich für die Implementierung der Statusbenachrichtigung, da es einfacher zu sein schien, die Erreichbarkeit im Hintergrund zu aktualisieren und die aktuellen Ergebnisse sofort verfügbar zu haben, anstatt eine synchrone Anfrage zu starten, wenn ich eine Netzwerkverbindung herstellen wollte.Ermitteln, wann eine EDGE-Verbindung nach einem Ausfall eines iPhone zurückkehrt

Mein Problem ist, dass ich in einem EDGE-Netzwerk falsche Negative bekomme - das Telefon hat Konnektivität, aber die App denkt, dass dies nicht der Fall ist. Mein Verständnis ist, dass Sie keine Benachrichtigung erhalten, wenn eine EDGE-Verbindung, so meine Annahme ist, dass ich die Verbindung irgendwann verloren und wiedergewinnen konnte. Das Neustarten der App reicht normalerweise aus, um die Netzwerkverbindung zu sehen.

Dies ist keine optimale Lösung, also habe ich mich gefragt, ob jemand anderes auf dieses Problem gestoßen ist und irgendwelche Gedanken zu einer Lösung hatte.

(Ich weiß nicht, ob das auch für 3G gilt; ich betreibe ein iPhone der ersten Generation).

Antwort

14

Erreichbarkeitsinformationen schienen mir auch nicht zuverlässig zu sein, um Wi-Fi zu erkennen. Also benutze ich stattdessen das Polling. Überprüfung alle 5 Sekunden scheint nichts zu schaden.

- (void) checkReachability { 
    BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork); 

    // Do something... 

    [self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0]; 
} 
+0

Dank ich heute Erreichbarkeits auf Einbeziehung plane, so dass Sie wahrscheinlich einige Zeit gerettet meine Zukunft selbst :) –

+0

hey Wie verwende ich diese class.I Reachability.h hinzugefügt und Reachability.m Datei und importierte reachability.h Datei in meiner AppDelegate jetzt, wenn ich Ihre Methode in meine appDelegate setzen, erhalte ich Fehler. –

+4

Der Erreichbarkeitscode hat sich im vergangenen Jahr erheblich geändert. Also, der obige Code wird nicht mehr funktionieren. –

1

Es gibt ein nettes Erreichbarkeitsbeispiel im Netz. es funktioniert wunderbar: http://servin.com/iphone/iPhone-Network-Status.html

Aber sehen Sie, wenn ich versuche, es meine eigene Art und Weise zu verwenden, es ist nur Bomben.

versucht, es zu implementieren mit:

NSString *sCellNetwork;  
NSString *sNetworkReachable; 

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN) 

{do it} 

else { 
    Network fail alert; 
} 
Verwandte Themen