检查互联网连接 iOS - Obj-C
Posted
技术标签:
【中文标题】检查互联网连接 iOS - Obj-C【英文标题】:Check internet connection iOS - Obj-C 【发布时间】:2015-06-20 19:38:42 【问题描述】:我正在尝试检查我的应用是否有互联网连接,我可以使用苹果的可达性来做到这一点,就像这样
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;
它可以工作,但现在我想做的是,如果这是没有互联网的最后一种情况,我会显示一个视图告诉用户,然后在后台,我想检查互联网何时恢复如果它确实回来了,然后像我一样删除视图。
我尝试将上述代码放入一个方法中,如果没有互联网,则再次调用该方法,但是视图没有出现,如果没有运行检查,它只是不断地反复运行该方法。
那么,如果没有互联网,我如何在后台运行检查以查看它何时返回,然后隐藏视图?
感谢您的帮助。
编辑
这是我第一次从 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;
当我重新打开互联网时它可以工作,我得到了正确的案例,但是当它持续运行以检查互联网何时开启时,视图没有出现?为什么不出现?
【问题讨论】:
@Aanabidden 感谢您的回复,您能再补充一点吗,我不太清楚如何使用这些? 它没有出现,因为您可以取消隐藏视图直到它被隐藏。 @Aanabidden 抱歉这句话没有意义 ^你是calling
函数,抱歉我错过了这个词。
【参考方案1】:
后台入口可以使用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];
【讨论】:
好的,但我认为我解释得不太正确,或者你没有完全明白我的要求。我不只是想重新检查应用程序何时再次激活(对吗?)。我加载我的主屏幕并且没有互联网我显示noInternetView
,当它显示时我想检查用户是否重新连接以及他们是否隐藏了视图?有道理?谢谢以上是关于检查互联网连接 iOS - Obj-C的主要内容,如果未能解决你的问题,请参考以下文章