2017-06-14 125 views
1

我正在使用Reachability演示获取网络状态更改通知,并且通过使用此代码,我可以在wifi开启/关闭时获得回叫,但是如果我将wifi连接从一个网络更改为另一个网络那么我无法获得网络更改的回调。 正如我有搜索代码,发现这可以通过使用下面的回调是可能的,但我不知道如何使用这个在我的代码Wifi网络更改通知

typedef void (*SCNetworkReachabilityCallBack) (
        SCNetworkReachabilityRef   target, 
        SCNetworkReachabilityFlags   flags, 
        void     * __nullable info 
        ); 

任何一个可以请帮我拿到样品与网络更改回调代码?

回答

0

如果你使用这个Reachability文件,那么它很容易。 添加观察员viewWillAppear中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityDidChange:) name:kReachabilityChangedNotification object:nil]; 

内,实现观测方法

- (void)reachabilityDidChange:(NSNotification *)notification { 
    Reachability *reachability = (Reachability *)[notification object]; 

    if ([reachability isReachable] && [reachability isReachableViaWiFi]) { 
     NSLog(@"Reachable via Wifi"); 
    } 
} 

更新

添加您的可达性处理程序的网络变更结束块内的下面的代码。通过发送SCNetworkReachabilityFlag作为该方法的参数。

-(BOOL)isReachableViaWiFi :(SCNetworkReachabilityFlags)flags { 

     // Check we're reachable 
     if((flags & kSCNetworkReachabilityFlagsReachable)) 
     { 
      // Check we're NOT on WWAN 
      if((flags & kSCNetworkReachabilityFlagsIsWWAN)) 
      { 
       return NO; 
      } 
      return YES; 
     } 
    return NO; 
} 
+0

可以请你帮助我,让我可以能够从获得的回调” SCNetworkReachabilityCallBack“ –

+0

”viewWillAppear“在按下home按钮后不会打电话 –

+0

我已经更新了答案请看 – Subramanian

0

This后可能会帮助你。正如他所说的,每当有网络变化/网络中断或网络闪烁时,可达性类将触发一个ReachabilityChangedNotification,最终将调用此用户定义的方法checkForReachability。所以,你可以在这里处理任何事情。

+0

我使用的是Objective-C的代码。 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged :) name:kReachabilityChangedNotification object:nil]; - (void)reachabilityChanged:(NSNotification *)note { \t Reachability * curReach = [note object]; \t NSParameterAssert([curReach isKindOfClass:[Reachability class]]); \t [self updateInterfaceWithReachability:curReach]; } “reachabilityChanged” Wi-Fi时由用户 –

+0

改变可以请你帮助我,使我可以能够从获得的回调并没有叫“SCNetworkReachabilityCallBack –

0

添加观察者: - [[NSNotificationCenter defaultCenter]的addObserver:自选择器:@selector(checkNetworkStatus :)名:kReachabilityChangedNotification对象:无];

-(void) checkNetworkStatus:(NSNotification *)notice 
{ 
    // called after network status changes 
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; 
    if(internetStatus == NotReachable) 
    { 

    } 
    else if([internetReachable connectionRequired]) 
    { 
    } 
} 
+0

请帮我一下,以便我可以从”SCNetworkReachabilityCallBack –