在开发的过程中,我们需要检测网络状态,比如当前网络状态(连接,断开),网络环境(2G/3G,WIFI)等。苹果提供了一个在iOS环境下检测网络用的库:Reachability。它能方便的监测网络状态,让我们在不同的网络状态下做出对应的处理。

     现在我们来学习Reachability的使用。
     首先我们需要明白以下几个问题:
  • Reachability能做什么
    • 监测网络是否可用
    • 判断当前处于什么网络环境 (2G/3G,WIFI)
    • 监测连接方式的变更
  • 下载
    • 苹果官方:点击下载
    • Git:点击下载(支持arc和GCD)
  • 安装
            方法1.使用Cocoapods直接安装即可。
            方法2.下载Reachability.h和Reachability.m文件,拽入你的工程中,然后添加SystemConfiguration.framework 库即可。
  • 使用
检测网络是否可用。

在 AppDelegate.h文件中添加如下代码
#import <UIKit/UIKit.h>
@class Reachability; //ADD
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (nonatomic) Reachability  *hostReach;//ADD
@property (strong, nonatomic) UIWindow *window;
@end

在 AppDelegate.m文件的- (BOOL)application:didFinishLaunchingWithOptions:方法中添加如下代码:
      [[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(reachabilityChanged:)name:kReachabilityChangedNotificationobject:nil];self.hostReach = [Reachability reachabilityWithHostName:@"www.apple.com"];[self.hostReach startNotifier];

reachabilityChanged实现如下:
/** Called by Reachability whenever status changes.*/
- (void) reachabilityChanged:(NSNotification *)note
{Reachability* curReach = [note object];NSParameterAssert([curReach isKindOfClass:[Reachability class]]);[self updateInterfaceWithReachability:curReach];//更新用户界面,或者在当前状态实现你想要的处理
}

Reachability.h中定义了三种网络状态:

typedef enum {NotReachable = 0,            //无连接ReachableViaWiFi,           //使用3G/GPRS网络ReachableViaWWAN       //使用WiFi网络} NetworkStatus;

在其他控制器中添加相应的通知,即可监测网络,并在其中做出相应的处理。
判断当前的网络环境
如果你想在wifi环境离线数据,那么就需要知道当前处于什么样的网络环境。
  // 是否wifi
+ (BOOL) IsEnableWIFI{return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);}// 是否3G
+ (BOOL) IsEnable3G{return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);} 
在stackoverflow上有个问答介绍了一些关于Reachability的用法:点击查看
参考:
http://witcheryne.iteye.com/blog/1879827
http://oncerios.diandian.com/post/2013-06-28/40050041969
http://www.cocoachina.com/bbs/read.php?tid-31300.html
http://stackoverflow.com/questions/11177066/how-to-use-ios-reachability

【iOS开发】---- Reachability 网络监测相关推荐

  1. iOS开发之网络监听(一)Reachability

    demo下载 Reachability对系统的网络状况类SCNetworkReachability进行的封装,持有全局的网络状况句柄reachabilityRef,简化了SCNetworkReacha ...

  2. iOS开发系列--网络开发(转)

    iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 66365 阅读, 56 评论, 收藏, 编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...

  3. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载

    前言:iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载是在前篇iOS开发之网络编程--使用NSURLConnection实现大文件下载的基础上进行    断点续传的设置 ...

  4. iOS开发工具——网络封包分析工具Charles

    iOS开发工具--网络封包分析工具Charles 简介 Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Char ...

  5. iOS开发笔记 - 网络篇

    计算机网络基础   计算机网络是多台独立自主的计算机互联而成的系统的总称,最初建立计算机网络的目的是实现信息传递和资源共享.   如果说计算机是第二次世界大战的产物,那么计算机网络则是美苏冷战的产物. ...

  6. iOS开发之网络音乐播放器(SC音乐)(二)

    iOS开发之网络音乐播放器(SC音乐)(二) 前言 iOS开发之网络音乐播放器(SC音乐)(一)已经介绍完播放控制.音乐数据获取解析.歌词显示等.本文在上文的基础上介绍锁屏播放设置,后台播放设置,手势 ...

  7. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  8. IOS开发之网络编程--文件压缩和解压缩

    2019独角兽企业重金招聘Python工程师标准>>> 前言: QQ表情包就用到了解压缩,从网络下载的那么多表情文件格式并不是一个一个图片文件,而是多个图片压缩而成的表情压缩包.下面 ...

  9. iOS开发工具-网络封包分析工具Charles

    简介 本文为InfoQ中文站特供稿件,首发地址为:文章链接.如需转载,请与InfoQ中文站联系. Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯 ...

  10. iOS开发-调试网络限速(真机和模拟器)

    在iOS开发中,针对不同网络状况做一下测试处理是很有必要的.但是我发现还是有一些iOS开发者不太注意到不同网络环境下的调试问题,或者说不清楚如何调试这种情况. 下面我将针对真机和模拟器分别做简单的说明 ...

最新文章

  1. C语言经典例16-最大公约数和最小公倍数
  2. javax.swing super()方法
  3. Android中点击事件的四种写法
  4. 为节约而生:从标准Attention到稀疏Attention
  5. 微型计算机的三级存储体系是,简述存储系统的三级存储体系及分级的目的。
  6. SVN interrupted与already-locked 解决方法
  7. 业界萌新对斯坦纳树的小结
  8. 【正则化】Label Smoothing详解
  9. 苹果宣布将把语音助手Siri整合到Apple Music服务中
  10. bootstrap方法_中介效应中的bootstrap方法
  11. 熊出没之奇幻空间里面的机器人图片_武汉欢乐谷奇幻灯光节12月24日盛大开幕...
  12. winform直接控制云台_售价899元,大疆手机云台DJI OM 4发布,磁吸式卡位 15小时续航...
  13. ChromeOS+Win双系统安装教程
  14. selenium爬取京东笔记本电脑信息
  15. 如何越过计算机开机密码,怎样跳过电脑开机密码教程
  16. Linux Mint 19 Tara Beta 版发布,基于 Ubuntu 18.04
  17. Shopnc之nginx安装
  18. 2022年5月22日-Taylor级数的python实验
  19. C语言 模拟简单的地铁售票系统
  20. Linux命令总结-cd

热门文章

  1. Centos7虚拟机下安装配置Tomcat
  2. 盘一盘 QuantLib 系列 2 - 生成日期表
  3. 如何实现 一个系统去调用另一个系统的接口
  4. 微信小程序商机_盘点微信小程序的八大商机
  5. android tun0 流量统计,Android应用流量统计——NetworkStatsManager使用-Go语言中文社区...
  6. linux 内存各指标,Linux 内存性能指标
  7. 记录: 之前发的 Unity 2018.x工具已经不能用了,我在这里说明一下,不是破解不是破解不是破解,我就说明一下情况!!!0.0
  8. LETO型空间光调制器(SLM)的安装
  9. 十二、用卡诺图化简真值表(1)
  10. Android 绘制渐变色