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];

       

 
 

转载于:https://www.cnblogs.com/funny11/p/4948996.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值