检查互联网连接的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;
}
}
}
呼叫,它的工作原理,当我打开互联网回来,我得到正确的情况下,但是当它持续运行检查互联网何时开始,视图不会出现?为什么不出现?
答
对于背景条目,您可以使用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];
}
@Aanabidden感谢您的答复,您可以加入一点更多,我不太清楚如何使用这些? – spenf10
它并未出现,因为您可以取消隐藏视图直到隐藏视图。 – Aanabidden
@Aanabidden对不起,句子没有意义 – spenf10