我正在尝试检查我的应用是否有互联网连接,我可以使用苹果可达性,这样做
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 :(得分:0)
对于后台输入,您可以使用applicationDidEnterForeground
方法检查AppDelegate中的状态。
-(void)applicationDidEnterForeground:(UIApplication *)application {
// call your method here to check internet status
// lets say its
[Network checkReachabilityStatus];
}
或
您可以在视图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];
}