如何在iOS中连接或断开连接时收到通知?

时间:2012-09-27 20:39:03

标签: ios cocoa-touch wifi reachability

我正在尝试让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];    
}

并在相同的情况下测试它,它工作正常。然而,这不是我需要的方法,我宁愿需要通知来调用我的回调。

我还需要做些什么来使通知程序有效吗?

1 个答案:

答案 0 :(得分:1)

使用此库http://huytd.github.io/datatify/它非常易于使用和自定义。 setCallback方法将帮助您检测连接何时更改