iOS开发 利用Reachability判断网络环境
导入头文件:#import "Reachability.h"
然后将 SystemConfiguration.framework 添加进工程:
1、检查当前的网络状态(wifi、WAN还是无网络)
NetworkEnvironment.h:

#import <Foundation/Foundation.h>
#import "Reachability.h" @interface NetworkEnvironment : NSObject /**
* @brief get the signalton engine object
* @return the engine object
*/
+ (NetworkEnvironment *)sharedInstance; /**
* @brief get the network statue
*/
- (BOOL)isNetworkReachable; /**
* @brief Judgment wifi is connected
*/
- (BOOL)isEnableWIFI; /**
* @brief To judge whether the 3G connection
*/
- (BOOL)isEnable3G; @end

NetworkEnvironment.m:

#import "NetworkEnvironment.h"
#import "Reachability.h" @interface NetworkEnvironment () @end @implementation NetworkEnvironment static NetworkEnvironment *g_instance = nil; - (id)init
{
self = [super init];
if (self) { }
return self;
} /**
* @brief Whether there are single instance
* @return the result
*/
+ (BOOL)sharedInstanceExists
{
return (nil != g_instance);
} /**
* @brief get the signalton engine object
* @return the engine object
*/
+ (NetworkEnvironment *)sharedInstance
{
@synchronized(self) {
if ( g_instance == nil ) {
g_instance = [[[self class] alloc] init];
//any other specail init as required
}
}
return g_instance;
} /**
* @brief get the network statue
*/
- (BOOL)isNetworkReachable
{
BOOL isReachable = NO;
Reachability *reachability = [Reachability reachabilityWithHostname:@"www.baidu.com"];
switch ([reachability currentReachabilityStatus]) {
case NotReachable:{
isReachable = NO;
}
break;
case ReachableViaWWAN:{
isReachable = YES;
}
break;
case ReachableViaWiFi:{
isReachable = YES;
}
break;
default:
isReachable = NO;
break;
}
return isReachable;
} /**
* @brief Judgment wifi is connected
*/
- (BOOL)isEnableWIFI
{
return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
} /**
* @brief To judge whether the 3G connection
*/
- (BOOL)isEnable3G
{
return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
} @end

调用方法:
#import "NetworkEnvironment.h"
if (NO == [[NetworkEnvironment sharedInstance] isNetworkReachable]) {
[WBCommonHelper showHUDWithText:@"网络状况异常"];
2、网络连接过程中实时监控网络状况(网络变化)
首先引入头文件:
#import "Reachability.h"
.h文件中定义
Reachability *hostReach;
.m文件如下:

//wifi下自动更新,设置接受通知
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"UPDATESETTING"] isEqualToString:@"WIFI_AUTO"]) {
// 设置网络状态变化时的通知函数
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
hostReach = [[Reachability reachabilityWithHostname:@"www.baidu.com"] retain];
} #pragma mark - Public methods
-(void)reachabilityChanged:(NSNotification *)note
{
Reachability * curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
[selfupdateInterfaceWithReachability:curReach];
} -(void)updateInterfaceWithReachability:(Reachability *)curReach
{
NetworkStatus status = [curReach currentReachabilityStatus];
//由其他环境变为wifi环境
if (status == ReachableViaWiFi)
{
NSLog(@"切换到WIFi环境");
}
}

Reachability.h中定义了三种网络状态:
typedef enum {
NotReachable = 0, //无连接
ReachableViaWiFi, //使用3G/GPRS网络
ReachableViaWWAN //使用WiFi网络
} NetworkStatus;
iOS开发 利用Reachability判断网络环境的更多相关文章
- ios利用Reachability确认网络环境3G/WIFI(转)
iPhone开发技巧之网络篇(4)--- 确认网络环境 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的. Apple 的 例程 Re ...
- ios开发利用AFN检测网络状态
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; [manager setRe ...
- iOS中使用 Reachability 检测网络
iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Reachability都 ...
- IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)
IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...
- iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字
iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字 简述:NSString * regex_0 = @"\\d{1,}"; /*允许首位为0*/ NSString * re ...
- IOS判断网络环境
https://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 我下载的是vertio ...
- 【开发记录】iOS中使用 Reachability 检测网络
如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...
- iOS中4种判断网络请求的方式(系统状态栏、AFNetworking、Reachability、自定义)
iOS 实时判断网络状态 方法一:利用系统状态栏判断网络状态 // 状态栏是由当前app控制的,首先获取当前app UIApplication *app = [UIApplication shared ...
- iOS开发 - Swift实现检测网络连接状态及网络类型
一.前言 在移动开发中,检测网络的连接状态尤其检测网络的类型尤为重要.本文将介绍在iOS开发中,如何使用Swift检测网络连接状态及网络类型(移动网络.Wifi). 二.如何实现 Reachabili ...
随机推荐
- linux之php
/usr/local/php/sbin/php-fpm 却无法启动,提示错误: ERROR: failed to load configuration file '/usr/local/php/etc ...
- C语言 ---- 函数 结构体 iOS学习-----细碎知识点总结
函数的定义 返回值类型 函数名(形式参数列表) { 函数的实现 } 函数不允许嵌套定义 如果函数的定义在主调函数之后,那么要进行提前声明才能使用. // 匿名结构体,结构 ...
- SQL Server 索引中include的魅力(具有包含性列的索引)
2010-01-11 20:44 by 听风吹雨, 22580 阅读, 24 评论, 收藏, 编辑 开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [ ...
- CSS3动画产生圆圈由小变大向外扩散的效果
涉及到 CSS3 的动画(animation).2D 转换(transform: scale),具体如代码所示. github: https://github.com/wind-stone/CSS3- ...
- Mybatis Oracle 更新时报错17090
更新数据库时报错 查看数据库里的数据是已经更新了 . 我开始用的是注解@Update("......")调试了好久都找不到原因,因为单独执行更新语句是正确的,在项目里运行,数 ...
- NSCalendar NSDateComponents
// NSCalendar // 获取当前日历 NSCalendar *calendar = [NSCalendar currentCalendar]; // 获取当前时间日期的各个值 NSDate ...
- hadoop datanode启动失败
问题导读: 1.Hadoop出现问题时,该如何入手查看问题?2.datanode无法启动,我们该怎么解决?3.如何动态加入DataNode或TaskTracker? 一.问题描述当我多次格式化文件系统 ...
- Idea 常用快捷键列表
Idea 常用快捷键列表 Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert ...
- spring使用elasticsearch 5.x
elasticsearch客户端选择 这里使用transport建立elasticsearch客户端 applicationContext.xml配置,属性可以采用读取属性文件的方式.参考类Prope ...
- opencv的学习笔记1
想在周末去游泳,找了些游泳的注意事项什么的,想想还没干正事,就来继续看看opencv的使用吧,晚上看了opencv的一些基本入门的东西,打算下面主要总结CSDN上一个大牛的博文,链接如下:http:/ ...