Wi-Fi接続が確立または切断されたときに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];
}
同じシナリオでテストしたところ、正常に動作しました。ただし、それは私が必要とするアプローチではなく、コールバックを呼び出すための通知が必要です。
通知機能を機能させるために他に何かしなければならないことはありますか?