Reachability的使用

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

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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Reachability简介 Reachability是一个在iOS系统环境下检测iOS设备当前的网络环境的库...
    赵亦晨阅读 2,128评论 0 3
  • iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用。大多数的iOS应用都需...
    这位网友阅读 11,479评论 2 11
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,295评论 4 61
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,273评论 30 472
  • 来到繁华城市生活,始终有些不适, 2015年我被录到了省城一个专科学校,来自 农村的我,家庭本就...
    晨沅曦阅读 417评论 2 5