工作新学知识

Reachability的使用

2015-03-18  本文已影响2613人  浅陌

检测网络是否可以访问域名:

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];
上一篇 下一篇

猜你喜欢

热点阅读