• 网络环境检测:检测用户当前所处的网络状态
  • 效果图

    • 1.当蜂窝和wifi同时关闭时候 

    • 显示为不可达(AFNetworkReachabilityStatusNotReachable)状态

    • 2.打开蜂窝移动数据,关闭wifi 
    • 显示为wan网络 
    • 3.打开wifi,关闭蜂窝移动数据 
    • 显示为wifi网络(AFNetworkReachabilityStatusReachableViaWiFi) 
    • 4.同时打开wifi和蜂窝移动数据时候 
    • 显示为wifi网络,从这点来看,显然是不坑的呀 

步骤

  • 1.创建网络监听者管理者对象
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
  • 2.设置监听

    • 网络状态
    //显然是枚举值
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,//未识别的网络
AFNetworkReachabilityStatusNotReachable = 0,//不可达的网络
AFNetworkReachabilityStatusReachableViaWWAN = 1,//2G,3G,4G...
AFNetworkReachabilityStatusReachableViaWiFi = 2,//wifi网络

-设置网络监听

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未识别的网络");
break; case AFNetworkReachabilityStatusNotReachable:
NSLog(@"不可达的网络(未连接)");
break; case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"2G,3G,4G...的网络");
break; case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi的网络");
break;
default:
break;
}
}];
  • 3.开始监听
[manager startMonitoring];

代码

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//创建网络监听管理者对象
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; /*
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,//未识别的网络
AFNetworkReachabilityStatusNotReachable = 0,//不可达的网络(未连接)
AFNetworkReachabilityStatusReachableViaWWAN = 1,//2G,3G,4G...
AFNetworkReachabilityStatusReachableViaWiFi = 2,//wifi网络
};
*/
//设置监听
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未识别的网络");
break; case AFNetworkReachabilityStatusNotReachable:
NSLog(@"不可达的网络(未连接)");
break; case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"2G,3G,4G...的网络");
break; case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi的网络");
break;
default:
break;
}
}];
//开始监听
[manager startMonitoring];
}

相关链接:
IOS-利用AFNetworking监听网络状态

IOS-利用AFNetworking监听网络状态的更多相关文章

  1. iOS 使用AFNetWorking监听APP网络状态变化(可用于更改缓存策略、提示网络等)

    前言 我们知道在APP开发过程中.监听手机当前的网络状态还是一个非经常常使用的方法,这里我来为大家接受一种使用AFNetWorking来监听当前的网络状态的方法:网络监听对程序开发的帮助有非常多:比方 ...

  2. IOS-网络(监听网络状态)

    // // BWNetWorkTool.h // IOS_0131_检测网络状态 // // Created by ma c on 16/1/31. // Copyright © 2016年 博文科技 ...

  3. (原创)用Receiver和SystemService监听网络状态,注册Receiver的两种方式

    android中网络编程不可避免地要监听网络状态,wifi或者3G以及以太网,并根据当前状态做出相应决策. 在MyReceiver类中的onReceive方法中获得系统服务 ConnectivityM ...

  4. Android实时监听网络状态(2)

    在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityMana ...

  5. Android实时监听网络状态

    Android实时监听网络状态(1)   其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就 ...

  6. Android实时监听网络状态(1)

    其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就可以实现网络的监听. 1.添加访问网络和获 ...

  7. iOS 百度地图监听地图状态

    百度地图提供了地图状态的对象BMKMapStatus ///此类表示地图状态信息 @interface BMKMapStatus : NSObject { float _fLevel; // 缩放比例 ...

  8. IOS开发:监听来电状态的改变。

    #import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> @property(nonato ...

  9. 用BroadcastReceiver监听网络状态的变化

    在用户浏览网络信息时,如果网络突然断开,可以及时的提醒用户网络已断开.要实现这个功能,我们可以实现一个广播接收者来接收网络状态改变的广播,当由连接状态变为断开状态时,系统会发送一条广播,广播接收者接收 ...

随机推荐

  1. Android自定义控件2--优酷菜单界面初始化

    本文开始将逐步去实现下面优酷菜单的效果: 本文地址:http://www.cnblogs.com/wuyudong/p/5912538.html,转载请注明源地址. 本文首先来实现优酷菜单界面初始化工 ...

  2. DbUtils是Apache出品一款简化JDBC开发的工具类

    DbUtils     - DbUtils是Apache出品一款简化JDBC开发的工具类     - 使用DbUtils可以让我们JDBC的开发更加简单     - DbUtils的使用:       ...

  3. SQL Server(七)——存储过程

    一.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需要大量T-SQ ...

  4. Javascript之旅——第五站:说说那些所谓的包装类型

    最近不看犀牛书了,那本翻译的特烂而且好拗口,尤其是原型那块说的乱七八糟,后来经同事介绍,买了本js高级程序设计,然后就继续 苦逼的看,不吐槽了,继续说说js中有新鲜感的包装类型. 一:String 说 ...

  5. Javascript之旅——第四站:parseInt中要注意的坑

    前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息 一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效 ...

  6. SQLServer中的死锁的介绍

    简介      什么是死锁? 我认为,死锁是由于两个对象在拥有一份资源的情况下申请另一份资源,而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且所持资源无法释放. 什么又是阻塞? 阻塞是 ...

  7. Windows系统安装Oracle 11g 数据库

    一.下载 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html以下两网址来源此官方下载页 ...

  8. 安装了SQL2005再安装SQL 2008R2,提示此计算机上安装了 Microsoft Visual Studio 2008 的早期版本和检查是否安装了 SQL Server 2005 Express 工具的解决方案

    工作电脑上安装了SQL 2005, 但是客户电脑上安装的是SQL 2008R2,有时候连接他们的库调试没法连接,很不方便.然后又安装了个SQL2008 R2,期间遇到这两个问题,网上搜索了一下收到了解 ...

  9. 使用SQL检测死锁

    第一步:首先创建两个测试表,表goods_sort和goods 表goods_sort:创建并写入测试数据 IF EXISTS(SELECT name FROM sysobjects WHERE na ...

  10. 烂泥:centos单独编译安装gd库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...