在开发iOS应用或者游戏时,我们可以通过Reachability库进行iOS设备的网络监测。
首先,Reachability官方下载地址在这里。
1. Reachability简介
Reachablity 是一个iOS下检测,iOS设备网络环境用的库。
- 监视设备网络是否可用。
- 监视当前网络的连接方式。
- 监测网络连接方式的变更。
简单点说,Reachablity可以监测当前设备是未联网状态还是连接2g,3g,4g或wifi状态,并且当网络连接类型改变的时候可以实时监测通知。
2. Reachability使用
把下载的Reachability.h和Reachability.m文件加到项目中,在入口文件处包含Reachability头文件并加入下列代码:
(例如我使用cocos2d-x开发,就在AppController.mm文件中处理)
// 监测网络情况
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name: kReachabilityChangedNotification
object: nil];
Reachability* hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
[hostReach startNotifier];
检测某一特定站点的接续状况,这里以百度为例,reachabilityChanged方法是当网络环境改变时回调的函数,实现类似如下:
//网络环境改变回调函数
- (void)reachabilityChanged:(NSNotification *)note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
NetworkStatus status = [curReach currentReachabilityStatus];
switch (status)
{
case NotReachable:
NSLog(@"====当前网络状态不可达=======");
//其他处理
break;
case ReachableViaWiFi:
NSLog(@"====当前网络状态为Wifi=======");
//其他处理
break;
case kReachableVia2G:
NSLog(@"====当前网络状态为2G=======");
//其他处理
break;
case kReachableVia3G:
NSLog(@"====当前网络状态为3G=======");
//其他处理
break;
case kReachableVia4G:
NSLog(@"====当前网络状态为4G=======");
//其他处理
break;
case ReachableViaWWAN:
NSLog(@"====当前网络状态为WWAN=======");
//其他处理
break;
default:
NSLog(@"你是外星来的吗?");
//其他处理
break;
}
}
根据status判断当前网络状态变成哪种方式,在“//其他处理”处可加入其他处理代码。
网友评论
NotReachable = 0,
ReachableViaWiFi,
ReachableViaWWAN
} NetworkStatus; 官方的确实没有检测2G。3G。4G 的枚举值,不知道你是怎么弄出来的