网络环境的判断有两种方式
1、Reachability
2、AFNetWorking中 AFNetworkReachabilityManager

Reachability步骤
(1)导入Reachability类名
(2)初始化Reachability对象,HostName 尽量用一个比较稳定的网络
(3)添加观察者,接收网络环境发生改变的通知
(4)开始监测
(5)在通知中得到Reachability的对象

代码实例
//1 导入头文件

import "Reachability.h"

//2 创建Reachability对象 尽量用一个比较稳定的网站

     Reachability *reachability = [Reachability reachabilityWithHostName:@"www.baidu.com"];

// 3 添加观察者 接收网络环境变化的通知

/
kReachabilityChangedNotification 网络环境发生改变 通知的名字
NetworkStatus 网络环境的枚举
-(NSString
)currentReachabilityString 网络环境的字符串
*/

  [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(change:) name:kReachabilityChangedNotification object:nil];

//4 开始监测
//-(BOOL)startNotifier; 开始通知监测
//-(void)stopNotifier; 监测结束

[reachability startNotifier];

// 5 得到通知中的reachability对象 获得网络状态
// notfication.object;得到reachability对象

  • (void)change:(NSNotification )notfication{
    // notfication.object;得到reachability对象
    // 5 得到通知中的reachability对象 获得网络状态
    Reachability
    reachability = notfication.object;
    NSLog(@"%@",[reachability currentReachabilityString]);
    NSString *status = @"";
    switch (reachability.currentReachabilityStatus) {

    case NotReachable:{
    status = @"无网络";
    } break;
    case ReachableViaWiFi:{
    status = @"WIFI网络";
    } break;
    case ReachableViaWWAN:{
    status = @"WAN网络";
    } break; default:
    break;

    }
    NSLog(@"%@",status);
    }

下面是第二种方法
AFNetWorking
(1)导入类库
(2)创建检测对象 类方法shareManager
(3)开始监测
(4)通过检测对象 获得检测结果 回调方法(setReachabilityStatusChangeBlock:)

代码实例
// 1) 导入类库

import "AFNetworking.h"

// 2) 初始化AFNetworkReachabilityManager对象

 AFNetworkReachabilityManager *reachabilityMannger =   [AFNetworkReachabilityManager sharedManager];

// 3)开始监测
// - (void)startMonitoring;
// - (void)stopMonitoring;

[reachabilityMannger startMonitoring];

// 4)获得监测的网络状态

  [reachabilityMannger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSString *result = @"";
switch (status) {
case AFNetworkReachabilityStatusUnknown:
result = @"未知网络";
break;
case AFNetworkReachabilityStatusNotReachable:
result = @"无网络";
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
result = @"WAN";
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
result = @"WIFI";
break; default:
break;
}
NSLog(@"%@",result);
}];

ps:以上两种方式都需要下载下载reachability或者AFNetworking
以searchafnetworking 为例
方法 :打开终端 pod searchafnetworking
-> AFNetworking (3.0.4)
A delightful iOS and OS X networking framework.
pod 'AFNetworking', '~> 3.0.4'

文/用爱之心解爱之毒(简书作者)
原文链接:http://www.jianshu.com/p/4fbce026418a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

iOS的网络环境判断的更多相关文章

  1. iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

    前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...

  2. iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G) by徐文棋

    前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...

  3. 利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

    前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...

  4. IOS判断网络环境

    https://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 我下载的是vertio ...

  5. iOS 检测网络状态 自动判断 认为提示网络改变

    检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是让用户了解自己的网络状态,防止一些误会(比如怪应用无能)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验WIFI\3G ...

  6. iOS模拟(糟糕的)网络环境

    有时候为了模拟在糟糕的网络环境下app的表现,会故意拔网线(断wifi),苹果其实提供了专门的工具来精确地模拟你在几个预设的场景下的网络连接情况:Network Link Conditioner 点击 ...

  7. ios利用Reachability确认网络环境3G/WIFI(转)

    iPhone开发技巧之网络篇(4)--- 确认网络环境  开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的. Apple 的 例程 Re ...

  8. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  9. 检测 iOS 系统网络权限被关闭

    背景 一直都有用户反馈无法正常联网的问题,经过定位,发现很大一部分用户是因为网络权限被系统关闭,经过资料搜集和排除发现根本原因是: 第一次打开 app 不能访问网络,无任何提示 第一次打开 app 直 ...

随机推荐

  1. AppStore 上架注意事项及错误修改

    1.上架之前首页要配置好发布证书,配置用于发布的配置文件. 2.必须上传3.5英寸和4英寸图片,这两种图片尺寸不能缺. 3.提交的版本必须是在8.0及以上的版本. 4.必须用发布证书,如果提示UUID ...

  2. js原生碰撞检测

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. DOM操作基础

    ownerDocument 返回元素的 ownerDocumentoffsetParent 获取父节点(找有定位的父节点,没有定位默认是body,ie7以下定位在自己是html)parentNode ...

  4. Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...

  5. Docker容器概念讲解

    Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源. Docker是通过内核虚 ...

  6. JS给文本框赋值后,在页面后台取不到文本框值的解决方法

    转自:http://www.cnblogs.com/qiaohd/archive/2012/03/23/2413660.html (ReadOnly.disabled 都有可能造成取值取不到) 开发一 ...

  7. Java集合系列:-----------07Map架构

    我们之前了解了Collection框架,我们再来了解一下Map架构.前面我们讲了Conllection中的List结合,没有讲Collection中的Set集合, 因为Collection框架中的Se ...

  8. JavaScript中call,apply,bind方法的总结。

    why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user:"追梦子", fn:f ...

  9. 三言两语聊Python模块–文档测试模块doctest

    doctest是属于测试模块里的一种,对注释文档里的示例进行检测. 给出一个例子: splitter.pydef split(line, types=None, delimiter=None): &q ...

  10. mybatis字符串模糊匹配

    1.  参数中直接加入%%,注意不需要加两个单引号,加了就会出错,因为系统会自动为字符串类型加上两个单引号 <select id="selectPersons" result ...