Objective c 检查internet连接可达性
我在我的应用程序中使用可达性检查互联网连接。 我如何有争议地检查用户的连接,如果他的连接失败或从wi-fi更改为3G,如何通知我 现在这是我的代码:Objective c 检查internet连接可达性,objective-c,reachability,Objective C,Reachability,我在我的应用程序中使用可达性检查互联网连接。 我如何有争议地检查用户的连接,如果他的连接失败或从wi-fi更改为3G,如何通知我 现在这是我的代码: - (void)viewDidLoad { [super viewDidLoad]; Reachability *myNetwork = [Reachability reachabilityWithHostname:@"google.com"]; NetworkStatus myStatus = [myNetwork currentReachab
- (void)viewDidLoad
{
[super viewDidLoad];
Reachability *myNetwork = [Reachability reachabilityWithHostname:@"google.com"];
NetworkStatus myStatus = [myNetwork currentReachabilityStatus];
switch (myStatus) {
case NotReachable:
{ NSLog(@"There's no internet connection at all.");
[self performSegueWithIdentifier: @"noInternet" sender: self];
}
break;
case ReachableViaWWAN:
NSLog(@"We have a 3G connection");
break;
case ReachableViaWiFi:
NSLog(@"We have WiFi.");
break;
default:
break;
}
如何在加载应用程序之前检查interner连接,我在Appdelegate.m中尝试了此代码,但由于PerformsgueWithIdentifier方法而出错。如何在加载应用程序之前检查interner连接
您可以在appdelegate中检查internet连接。你不能做任何事情来通知用户。你需要窗口(我相信是第一个视图),然后才能发出警报
您试图实现什么目标?要检查internet连接,您可以使用以下方法:
- (BOOL)connected {
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
return !(networkStatus == NotReachable);
}
这将返回一个BOOL,您可以在条件中使用它来检查internet连接
注意:确保添加适当的框架,并在.m文件顶部添加以下内容:
#import "Reachability.h"
#import <SystemConfiguration/SystemConfiguration.h>
此外,还应为计时器创建ivar,以便在不再需要时使其失效,如:
if(timer) {
[timer invalidate];
timer = nil;
}
我找到了检查用户internet连接更改的答案:
Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Block Says Reachable") ;
});
};
reach.unreachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Block Says Unreachable");
});
};
这就是我尝试的,所以重点是我无法从appdelegate访问视图。我想做的是,在应用程序运行的每一秒检查互联网连接,若有任何变化发生,应用程序会向用户显示一条消息。我怎么能有争议地检查它?有争议地?你的意思是持续?--不幸的是,在显示根视图之前,您无法显示任何内容。我会在根视图控制器的viewdide中设置一个计时器,然后根据您的喜好随时检查它。不过,请注意,viewDidAppear可以被多次调用。嘿,我检查internet没有问题,我已经有了它。问题是我如何有争议地检查它?如果用户连接失败,我怎么知道呢?嗯,你可以使用NSTimer每隔一分钟左右检查一次,但你真的想要吗?您是否可以仅在用户准备执行需要网络连接的操作时进行检查?我在哪里可以设置在我的所有应用程序中有效的NSTimer?应用程序中有许多按钮和控件视图,我无法在每次操作中检查互联网连接,我需要一些类似于委托的东西,以便在互联网连接发生变化时通知我。这对我来说很重要,因为如果互联网连接失败,应用程序就会崩溃
Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Block Says Reachable") ;
});
};
reach.unreachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Block Says Unreachable");
});
};