2017-06-14 124 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 –