检测网络是否可以访问域名:
Reachability *reach = [Reachability reachabilityWithHostname:@“www.baidu.com"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
[reach startNotifier];
通过KVO我们可以监听网络是否改变,当网络改变时,会发送消息给reachabilityChanged,reachabilityChanged的代码为
- (void)reachabilityChanged:(NSNotificationCenter *)note
{
NetworkStatus internetStatus = [self.reach currentReachabilityStatus];
if (internetStatus) {
//可以访问网络
} else {
//没有可以访问的网络
}
}
其中NetworkStatus有三个状态
typedef NS_ENUM(NSInteger, NetworkStatus) {
// Apple NetworkStatus Compatible Names.
NotReachable = 0,
ReachableViaWiFi = 2,
ReachableViaWWAN = 1
};
名字很直观了
如果不想用KVO,可以用Block的方式
Reachability *reach = [Reachability reachabilityWithHostname:@“www.baidu.com"];
reach.reachableBlock = ^(Reachability*reach)
{
};
reach.unreachableBlock = ^(Reachability*reach)
{
};
[reach startNotifier];
KVO与Block的方式都需要
[reach startNotifier];
如果只是想验证一下网络是否可用,可以用
Reachability *reach = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reach currentReachabilityStatus];
if (internetStatus) {
//可以访问网络
} else {
//没有可以访问的网络
}
这样就不需要
[reach startNotifier];