我正在尝试让iOS在建立或断开连接时通知我的应用。
我使用iOS 4.3.5和5.1在iPhone和iPad上尝试了以下代码:
- (void)startWifiNotifier {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(statusUpdated:)
name:kReachabilityChangedNotification
object:nil];
Reachability *wifi = [Reachability reachabilityForLocalWiFi];
[wifi startNotifier];
NSLog(@"Wifi status: %i", [wifi currentReachabilityStatus]);
NSLog(@"Notifier started");
}
- (void)statusUpdated:(NSNotification *)notice {
NetworkStatus s = [[notice object] currentReachabilityStatus];
if(s == NotReachable) {
NSLog(@"Wifi disconnected");
} else {
NSLog(@"Wifi connection established");
}
}
问题是我的回调“statusUpdated”永远不会被调用。我知道这应该按原样工作,但我尝试进入和退出wifi范围(因此连接并断开连接)并打开和关闭wifi路由器以强制断开连接,我的回调永远不会被调用。
我也试过这个:
@private
Reachability *wifi;
...
- (void) startTimerLog {
wifi = [Reachability reachabilityForLocalWiFi];
[self timerLog];
}
- (void) timerLog {
NSLog(@"Reachability: %i", [wifi currentReachabilityStatus]);
[self performSelector:@selector(timerLog) withObject:nil afterDelay:0.5];
}
并在相同的情况下测试它,它工作正常。然而,这不是我需要的方法,我宁愿需要通知来调用我的回调。
我还需要做些什么来使通知程序有效吗?