WiFi连接可用时通知

当设备有WiFi连接可用或设备通过WiFi连接时,我需要通知。 只有当WiFi可用时,我需要做一些事情。

我使用了Reachability的以下代码:

BOOL status=true; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; internetReachability = [Reachability reachabilityForInternetConnection]; [internetReachability startNotifier]; NetworkStatus internetNetworkStatus = [internetReachability currentReachabilityStatus]; status = (internetNetworkStatus == ReachableViaWiFi); 

但是checkNetworkStatus:方法调用不正确和准确。 所以,请指导我解决这个问题。

任何帮助解决问题必须赞赏。

我希望这会帮助你解决你的问题。

 -(void) rechabilityInit { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; self.internetConnectionReach = [Reachability reachabilityForInternetConnection]; self.internetConnectionReach.reachableBlock = ^(Reachability * reachability) { NSLog(@"%@", reachability.currentReachabilityString); [[NSOperationQueue mainQueue] addOperationWithBlock:^{ dispatch_async(dispatch_get_main_queue(), ^{ // Do stuff here when WIFI is availble }]; }; self.internetConnectionReach.unreachableBlock = ^(Reachability * reachability) { NSLog(@"%@", reachability.currentReachabilityString); dispatch_async(dispatch_get_main_queue(), ^{ [[NSOperationQueue mainQueue] addOperationWithBlock:^{ // do some stuff here when WIFI not present }]; }; [self.internetConnectionReach startNotifier]; 

}

 -(void)reachabilityChanged:(NSNotification*)note { Reachability * reach = [note object]; if (reach == self.localWiFiReach) { if([reach isReachable]) { NSString * temp = [NSString stringWithFormat:@"LocalWIFI Notification Says Reachable(%@)", reach.currentReachabilityString]; NSLog(@"%@", temp); } else { NSString * temp = [NSString stringWithFormat:@"LocalWIFI Notification Says Unreachable(%@)", reach.currentReachabilityString]; NSLog(@"%@", temp); } } } 

下面的方法是帮我解决我的问题:

 // Use below to any method // check for internet connection [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; internetReachability = [Reachability reachabilityForInternetConnection]; [internetReachability startNotifier]; -(void) checkNetworkStatus:(NSNotification *)notice { // called after network status changes NetworkStatus internetStatus = [internetReachability currentReachabilityStatus]; switch (internetStatus) { case NotReachable: { NSLog(@"The internet is down."); break; } case ReachableViaWiFi: { NSLog(@"The internet is working via WIFI."); //Remove Observer [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; //Write your code break; } case ReachableViaWWAN: { NSLog(@"The internet is working via WWAN."); break; } } }