iOS 网络编程 (一)网络状态
来源:互联网 发布:matlab 画数组 编辑:程序博客网 时间:2024/05/21 14:57
开发中经常会遇到检测网络状态情况,现在说一下ios中如何获取网络状态,以及监听网络状态变化。
首先下载Reachability文件,将Reachability.h和Reachability.m文件导入工程中。由于Reachability.h文件导入了
#import <SystemConfiguration/SystemConfiguration.h>
,所以工程中需要添加SystemConfiguration.framwork。
获取网络状态
NSString *hostName = @"www.baidu.com"; Reachability *reachability = [Reachability reachabilityWithHostName:hostName]; switch ([reachability currentReachabilityStatus]) { case NotReachable: //不能访问 break; case ReachableViaWiFi: //使用wifi break; case ReachableViaWWAN: //使用3/4G网络 break; default: break; }
上述只能判断是否能访问该网址,即使网络处于连接状态,但只要该应用无法访问指定站点(可能因为站点不存在),也会返回NotReachable。可以用下面的方法。
/** 检测 wifi 状态 */- (BOOL) checkWifiState { Reachability *wifi = [Reachability reachabilityForLocalWiFi]; return [wifi currentReachabilityStatus] != NotReachable; // 有wifi}/** 检测蜂窝移动数据状态 */- (BOOL) checkCellularState { Reachability *conn = [Reachability reachabilityForInternetConnection]; return [conn currentReachabilityStatus] != NotReachable;}
监听网络状态改变
//通知中心监听kReachabilityChangedNotification通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange:) name:kReachabilityChangedNotification object:nil]; //获取Reachability对象 Reachability *reach = [Reachability reachabilityWithHostName:@"www.baidu.com"]; //让Reachability对象开启监听 [reach startNotifier];
回调
-(void)networkChange:(NSNotification *)noti{ //获取被监听的Reachability对象 Reachability *reachability = [noti object]; //获取网络状态。 NetworkStatus status = [reachability currentReachabilityStatus]; //....}
关闭监听
[reach stopNotifier];
0 0
- iOS 网络编程 (一)网络状态
- iOS网络状态(一)
- IOS网络编程(一)
- iOS网络编程(一)
- ios开发 网络编程浅析(一)
- iOS开发之网络编程(一)
- iOS网络编程(一)NSURLConnection
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- 网络编程(一)
- URAL1297Palindrome(最长回文子串 、后缀数组最长公共前缀+RMQ)
- Jess学习基础(一)
- 上传视频后获取真实地址_(qiniu)
- oracle 导入txt文件
- 详细解析oracle中left join,right join,inner join用法
- iOS 网络编程 (一)网络状态
- Android最大方法数和解决方案
- faster-rcnn在ubuntu环境下的配置以及demo运行
- TextUtils类的常用方法isEmpty与equals
- jdbc使用prepareStatement实现简单的转账功能
- leetcode_c++:树:Binary Tree Maximum Path Sum(124)
- C++中this指针
- MySQL数据类型
- RDD、DataFrame和DataSet的区别