网络环境的判断有两种方式
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. 封装jQuery Validate扩展验证方法

    一.封装自定义验证方法-validate-methods.js /***************************************************************** j ...

  2. 配置Tomcat使用Redis作为session管理

    1. 在 tomcat/lib 中增加以下jar包 commons-pool2-.jar jedis-.jar tomcat-redis-session-manager-.jar 2. 修改tomca ...

  3. js,onblur后下一个控件获取焦点判断、html当前活跃控件、jquery版本查看、jquery查看浏览器版本、setTimeout&setInterval

    需求: input控件在失去焦点后直接做验证,验证通不过的话,显示相应错误.但是如果失去焦点后点击的下个控件是比较特殊的控件(比如,退出系统),那么不执行验证操作,直接退出系统(防止在系统退出前,还显 ...

  4. weblogic.nodemanager.common.ConfigException: Native version is enabled but nodemanager native library could not be loaded 解决办法

    近日在一个原本工作正常的weblogic web server(操作系统为redhat 64位系统)上折腾安装redis/hadoop等东东,yum install了一堆第3方类库后,重启weblog ...

  5. 向jboss写入服务器日志

    实际开发中,记录日志是常用的功能,jboss默认情况下已经记录了很多运行日志,如果开发人员要手动在server.log中写入日志,可以参考下面的方法: package utils; import ja ...

  6. Qt 5.2 Creator 和 vs2012 QT 插件的安装

    在QT官网下载QT http://qt-project.org/downloads 我下的是64位版本Qt 5.2.1 for Windows 64-bit vs2012插件是  Visual Stu ...

  7. sql基本命令

    --------------------------------------------------------SQL基本命令开始----------------------------------- ...

  8. 创业这三年¥.NET之尴尬处境

    创业这三年#迈出第一步 创业这三年@各种奇遇 之前写的文章有兴趣的大家可以看看. 本来没有打算写这样一篇会遭人拍砖的文章,但是发现大家每天忙于编码,对市场环境..Net生态没有一个真实.多角度的认识, ...

  9. 2014 todo list

    1. 做好已知的各种项目,争取能成立固定团队2. 横向扩展技术学习,了解各种技术,加强技术素养3. 争取找个妹子4. 加强音律学习5. 继续发展各业余爱好6. 努力摇号 年底看收成.

  10. js的数组

    转载:http://blog.163.com/sammer_rui/blog/static/846200442010717900634/ https://developer.mozilla.org/z ...