OC - 18.监听iPhone的网络状态

使用系统的方法来监听网络状态


  • 系统的方法是通过通知机制来实现网络状态的监听
  • 实现网络状态监听的步骤
    • 定义Reachability类型的成员变量来保存网络的状态

      @property (nonatomic, strong) Reachability *reachability;
    • 注册为通知中心的的观察者
      // 在通知中心注册观察者
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
      /**
      * getNetworkStatus:监听到通知的回调方法
      * kReachabilityChangedNotification:通知的类型,即网络状态发生改变时,触发通知
      * object:传递给getNetworkStatus回调方法的参数
      */
      // 获取并保存网络状态
      self.reachability = [Reachability reachabilityForInternetConnection];
      // 开始监听
      [self.reachability startNotifier];
    • 在监听到通知的触发方法中判断网络的状态
      - (void)getNetworkStatus
      {
      	if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable)
      	{
          	NSLog(@"是WIFI");
      	}
      	else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable)
      	{
          	NSLog(@"是手机自带网络");
      	}
      	else
      	{
          	NSLog(@"网络有问题");
      	}
      }
    • 将观察者从通知中心移除,停止监听,清空网络监听对象
      - (void)dealloc
      {
      	[[NSNotificationCenter defaultCenter] removeObserver:self];
      	[self.reachability stopNotifier];
      	self.reachability = nil;
      }

使用AFNetworking监听网络状态


  • 通过AFN监听网络状态比较简单
  • 实现网络状态监听的
    • 获取AFNetworkReachabilityManager的实例

      AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    • 设置manager在网络发生变化的时回调的Block
      [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
          NSLog(@"----当前网络状态---%zd", status);
      }];
      /**
      * status:表示当前网络的状态,是个枚举类型变量,具有以下取值
      *		AFNetworkReachabilityStatusUnknown = -1
      *		AFNetworkReachabilityStatusNotReachable = 0
      *		AFNetworkReachabilityStatusReachableViaWWAN = 1
      *		AFNetworkReachabilityStatusReachableViaWiFi = 2
      */
    • 开始监听
      [manager startMonitoring];
时间: 2024-12-14 18:05:24

OC - 18.监听iPhone的网络状态的相关文章

iOS网络-06-监听Iphone的网络状态

使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic, strong) Reachability *reachability; 注册为通知中心的的观察者 // 在通知中心注册观察者 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkS

监听iPhone的通话状态之---CoreTelephony.framework

近期在做一个网络电话会议,需要判断手机的通话状态,通过在网上查找资料找到一个苹果私有框架,下面简单介绍如何使用: 1,要在项目中添加CoreTelephony.framework这个框架,怎么添加如下图: 点击“+”,添加即可: 2,在你需要用到该功能的class中,导入如下两个头文件 #import <CoreTelephony/CTCallCenter.h>#import <CoreTelephony/CTCall.h> 3,使用代码如下: CTCallCenter *cent

Android中检查、监听电量和充电状态的方法

Android中检查.监听电量和充电状态的方法 这篇文章主要介绍了Android中检查.监听电量和充电状态的方法,如判断当前充电状态.监听充电状态的改变.判断当前剩余电量等,需要的朋友可以参考下 当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始. 电池寿命通过剩余电量和充电状态来影响应用更新的执行.当用交流电充电时,执行更新操作对设备的影响是微不足道的,所以在大多数案例里,你可以把更新频率调到最快.如果设备不在充电,降低更新频率可以帮助延长电池寿命.

监听Listview的滚动状态,是否滚动到了顶部或底部

/** * @author:Jack Tony * @description : 监听listview的滑动状态,如果到了顶部就刷新数据 * @date :2015年2月9日 */ private class ListViewListener implements OnScrollListener { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int t

手机影音第三天,通过监听底部radiogroup按钮状态来切换中间FragmentLayout里的内容

主要是Fragment的使用,其切换fragment的步骤如下 1.获取FragmentManager 实例,但是需要MainActivity extends FragmentActivity才能去获取FragmentManager. 通过FragmentManager  fragmentManager=getSupportFragmentManager(); 2.开启事务  ,有点类似javaee里的hibernate 操作数据库 FragmentTranaction tranaction=

Fiddler-3 配置Fiddler监听iphone的http/https请求

电脑端可以通过Fiddler监听手机端的http请求.需要两个步骤:首先配置Fiddler,再配置手机端. 1 配置 Fiddler 允许远程设备连接: 菜单Tools - Telerik Fiddler Options - Connections - 勾选 Allow remote computers to connect. 保存成功后重启Fiddler才生效. 鼠标移至Fiddler窗口[dinghanhua]右上方 Online上,获取本机ip,等下配置手机端时会用到. 2  配置ipho

使用听云监听手游网络和崩溃的日志

经朋友介绍认识了“听云”这款产品,一直苦于监测手游的崩溃日志.我们专门搭建的日志上报系统每天会收集大概4G左右的日志,信息量很大,并且有效信息很少,还需要筛选.抱着试试看的态度,使用了一下听云. 我司游戏iOS和Android都有,所以我同时接入了两个平台的探针. 在我满怀欣喜的看到可以设置"game"类型的App并且看到数据后傻眼了.我擦,Android平台只能看到Java层访问网络的情况.如下图,两个域名都是游戏发行商的SDK在Java层做的网络访问. 游戏里C++对服务器访问的数

Oracle 配置监听和本地网络服务

一.配置监听 在oracle的配置和移植工具中打开Net Configuration Assistant,然后点击下一步. 点击下一步,然后输入监听的名称点击下一步 点击下一步后如图 点击下一步如图 单击下一步如图 选择否,点击下一步 二.配置网络服务 点击下一步,然后输入输入名称 点击下一步 点击下一步,填写主机名(127.0.0.1表示本机,如果要连接其他机器就要填写连接机器的ip地址) 点击下一步 点击下一步,在弹出的对话框中输入用户名和密码 点击确定后看是否验证成功,成功后就直接下一步,

使用悬浮框监听内存的使用状态 -- 附源码

源码下载地址:http://download.csdn.net/detail/hewence1/8176601 <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">先看一下效果:  显示当前内存使用率55% ,每一秒都刷新一次</span> 实现原理,在Service中创建一个悬浮框就可,在service中每秒钟访问计算一次单