网络环境的判断有两种方式
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. 在脚本中使用export导出变量值

    LD_LIBRARY_PATH环境变量可以用于设置Linux动态库的位置,常见的用法如export LD_LIBRARY_PATH=/home/username/foo:$LD_LIBRARY_PAT ...

  2. 安卓手机已保存WiFi密码查看助手(开源)

    一.需求分析 最近电脑需要连接WiFi,却发现WiFi密码给忘记了.而手机里有保存过的WiFi密码,但是在手机的设置界面看不到. 虽然已经有一些可以查看WiFi密码的app,但是主要还是担心密码被那些 ...

  3. SPM paired t-test步骤

    首先感谢大神空里流霜耐心的讲解,这篇笔记内容主要是整理他的谆谆教导,虽然他也看不到>< 所有数据都要经过平滑. Paired t-test虽然在2nd-level analysis中,但是 ...

  4. usb驱动开发12之设备生命线

    函数usb_control_msg完成一些初始化后调用了usb_internal_control_msg之后就free urb.剩下的活,全部留给usb_internal_control_msg去做了 ...

  5. R统计分析处理

    [翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...

  6. IE8中给HTML标签负值报错问题

    当通过JS给一个HTML标签设置高宽为负值的时候,会爆出一个“参数无效”的错误 chrome下不会报错,但是元素不会做任何关于负值的改变

  7. C#发展历程以及C#6.0新特性

    一.C#发展历程 下图是自己整理列出了C#每次重要更新的时间及增加的新特性,对于了解C#这些年的发展历程,对C#的认识更加全面,是有帮助的. 二.C#6.0新特性 1.字符串插值 (String In ...

  8. 一个用react+nodejs实现的笔记本小应用

    寒假回家产品经理一直叮嘱着要继续做学校团队的辣个项目,但是...,我到现在一点都还没做,而且还销声匿迹躲了起来藏了几天,是的我干了票大的,想把项目用一种新的架构实现了,所以这几天一直在偷偷摸摸的做一些 ...

  9. js的bind方法

    转载:http://www.jb51.net/article/94451.htm http://www.cnblogs.com/TiestoRay/p/3360378.html https://seg ...

  10. [POJ3696]The Luckiest number(数论)

    题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...