Notification when WiFi connection available

╄→尐↘猪︶ㄣ 提交于 2019-12-13 04:52:54

问题


I need a notification when device has WiFi connection is available or Device get connect via WiFi. I need to do some stuff only when WiFi is available.

I have used following code from 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);

But checkNetworkStatus: method not called properly and accurately. So, please guide me to solve this problem.

Any help to solve problem must be appreciated.


回答1:


I hope it will help you in your problem.

-(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);
     }
     }

}



回答2:


The following way is help me to solve my problem:

// 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;
        }
    }
}


来源:https://stackoverflow.com/questions/30109283/notification-when-wifi-connection-available

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!