我试图让 iOS 在建立或断开 wifi 连接时通知我的应用程序。
我在 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];
}
并在相同的场景下对其进行了测试,并且效果很好。然而,这不是我需要的方法,我宁愿需要通知来调用我的回调。
我还需要做什么才能使通知程序正常工作吗?