在开发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文件中处理)
1 2 3 4 5 6 7
| [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; Reachability* hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"]; [hostReach startNotifier];
|
检测某一特定站点的接续状况,这里以百度为例,reachabilityChanged方法是当网络环境改变时回调的函数,实现类似如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| - (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判断当前网络状态变成哪种方式,在“//其他处理”处可加入其他处理代码。