检查互联网连接的iOS - 对象 -

问题描述:

我想检查我的应用程序有互联网连接,我可以做到这一点使用苹果可达性,这样检查互联网连接的iOS - 对象 -

internetReach = [Reachability reachabilityForInternetConnection]; 
[internetReach startNotifier]; 
NetworkStatus netStatus = [internetReach currentReachabilityStatus]; 
witch (netStatus){ 
    case ReachableViaWWAN:{ 
     isReachable = YES; 
     NSLog(@"4g"); 
     noInternetView.hidden = YES; 
     break; 
    } 
    case ReachableViaWiFi:{ 
     isReachable = YES; 
     noInternetView.hidden = YES; 
     NSLog(@"wifi"); 
     break; 
    } 
    case NotReachable:{ 
     NSLog(@"NONE"); 
     noInternetView = [[CheckInternetView alloc] initWithFrame:self.view.bounds]; 
     [self.view addSubview:noInternetView]; 
     isReachable = NO; 
     break; 
    } 
} 

和它的作品,但现在我想如果这是最后一个没有互联网的情况,我会告诉用户,然后在后台显示一个视图,我想检查互联网何时回来,如果它回来,然后删除视图,就像我没有。

我试着把上面的代码放在一个方法中,如果没有互联网,然后再次调用该方法,但然后视图只是没有出现,如果没有运行检查它只是不断运行该方法一遍又一遍。

因此,如果没有互联网,我怎么能在后台运行支票来查看它何时回来,然后隐藏视图?

感谢您在advace的帮助。

编辑

这里是我的方法,我首先从viewDidLoad中

-(void)checkInternet { 

    internetReach = [Reachability reachabilityForInternetConnection]; 
    [internetReach startNotifier]; 
    NetworkStatus netStatus = [internetReach currentReachabilityStatus]; 

    switch (netStatus){ 
     case ReachableViaWWAN:{ 
      isReachable = YES; 
      NSLog(@"4g"); 
      noInternetView.hidden = YES; 
      break; 
     } 
     case ReachableViaWiFi:{ 
      isReachable = YES; 
      noInternetView.hidden = YES; 
      NSLog(@"wifi"); 
      break; 
     } 
     case NotReachable:{ 

      NSLog(@"NONE"); 
      noInternetView = [[CheckInternetView alloc] initWithFrame:self.view.bounds]; 
      [self.view addSubview:noInternetView]; 
      isReachable = NO; 
      [self checkInternet]; 
      break; 
     } 
    } 
} 

呼叫,它的工作原理,当我打开互联网回来,我得到正确的情况下,但是当它持续运行检查互联网何时开始,视图不会出现?为什么不出现?

+0

@Aanabidden感谢您的答复,您可以加入一点更多,我不太清楚如何使用这些? – spenf10

+0

它并未出现,因为您可以取消隐藏视图直到隐藏视图。 – Aanabidden

+0

@Aanabidden对不起,句子没有意义 – spenf10

对于背景条目,您可以使用applicationDidEnterForeground方法检查AppDelegate中的状态。

-(void)applicationDidEnterForeground:(UIApplication *)application { 
    // call your method here to check internet status 
    // lets say its 
    [Network checkReachabilityStatus]; 
} 

OR

您可以在视图UIApplicationDidBecomeActiveNotification通知用它来重新检查网络状态和隐藏/显示视图

-(void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showHideInternetStatusView) name:UIApplicationDidBecomeActiveNotification object:nil]; 
} 
-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; 
} 
+0

好吧,但我想我没有解释得很对,或者你没有完全明白我的要求。我不只是想重新检查应用程序何时变得活跃,这是否正确(对吧?)。我加载我的主屏幕,并没有互联网我显示'noInternetView',并且当这显示,我想检查用户是否已重新连接,如果他们然后隐藏视图?合理?谢谢 – spenf10

+0

看到编辑请忽略最后的评论 – spenf10