Frage

Ich habe Apples Erreichbarkeits Probe in mein eigenes Projekt aufgenommen, damit ich weiß, ob ich eine Netzwerkverbindung haben - wenn ich nicht über eine Netzwerkverbindung habe ich nicht die Mühe zu verschicken und Anfragen. Ich beschloss, mit der Statusmeldung Umsetzung zu gehen, weil es einfacher schien die reachablity im Hintergrund aktualisiert zu haben und die aktuellen Ergebnisse sofort zur Verfügung hat, im Gegensatz zu treten eine synchrone Anforderung aus, wenn ich eine Netzwerkverbindung machen will.

Mein Problem ist, dass ich falsch-negative Ergebnisse anfangen, wenn sie auf einem EDGE-Netz - die Telefon-Konnektivität, aber die App meint dies nicht der Fall ist. Mein Verständnis ist, dass Sie keine Benachrichtigung erhalten, wenn eine EDGE-Verbindung, so meine Vermutung ist, dass ich verloren und wieder die Verbindung zu einem bestimmten Zeitpunkt. die App neu zu starten ist in der Regel ausreichend, um die Netzwerkverbindung zu sehen.

Dies ist keine optimale Lösung, so dass ich frage mich, ob jemand anderes über dieses Problem kam und hatte keine Gedanken über eine Lösung.

(Ich weiß nicht, ob dies auf 3G gilt auch, ich bin mit einem ersten Gen-iPhone).

War es hilfreich?

Lösung

Erreichbarkeits notificataions schien es nicht für mich auch zuverlässig zu sein, zum Nachweis von Wi-Fi. So verwende ich nur Polling statt. alle 5 Sekunden Überprüfung scheint keinen Schaden zu tun.

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

    // Do something...

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

Andere Tipps

Es gibt ein schönes Erreichbarkeits Beispiel auf dem 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, ist es nur Bomben.

versucht, es zu implementieren mit:

NSString *sCellNetwork;     
 NSString *sNetworkReachable;  

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)

{do it} 

 else {
   Network fail alert; 
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top