IOS开发中网络状态的判断和时时更新
2013-11-19 17:19
525 查看
现在手机应用开发,几乎离不开网络操作,这里介绍一下当前网络状态的判断和如何监听网络状态的改变。
首先添加源文件,在Apple的开源代码Reachability中介绍了如何获取网络状态,这里也是使用这个,把Reachability.h和Reachability.m文件添加到你的工程中。没有这两个文件?https://github.com/tonymillion/Reachability这里是开源项目,里面有这两个文件。注意还需要添加支持库:将SystemConfig.framework添加到工程。
在Reachability中定义了三种网络类型,如下:
typedef
uint32_t NetworkStatus;
enum {
// Apple NetworkStatus Constant Names.
NotReachable =
kNotReachable, //无网络
ReachableViaWiFi =
kReachableViaWiFi, //GPRS/3G
ReachableViaWWAN =
kReachableViaWWAN //WIFI
};
判断网络状态的代码,如下:
那么有时我们需要时时的监听网络状态,那么怎么办呢?其实在Reachability中也是有处理的,该对象会监听网络状态的改变,并发出一个名为 “kReachabilityChangedNotification”的notification,这个字符串在Reachability.m中定义,
NSString *const kReachabilityChangedNotification =@"NetworkReachabilityChangedNotification";
如果你想在应用中时时的监听网络状态,只需要注册这个notification的接收器。
当网络状态改变时就会回调该方法
首先添加源文件,在Apple的开源代码Reachability中介绍了如何获取网络状态,这里也是使用这个,把Reachability.h和Reachability.m文件添加到你的工程中。没有这两个文件?https://github.com/tonymillion/Reachability这里是开源项目,里面有这两个文件。注意还需要添加支持库:将SystemConfig.framework添加到工程。
在Reachability中定义了三种网络类型,如下:
typedef
uint32_t NetworkStatus;
enum {
// Apple NetworkStatus Constant Names.
NotReachable =
kNotReachable, //无网络
ReachableViaWiFi =
kReachableViaWiFi, //GPRS/3G
ReachableViaWWAN =
kReachableViaWWAN //WIFI
};
判断网络状态的代码,如下:
+ (BOOL) IsEnableWIFI { return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable); } + (BOOL) IsEnableIntent { return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable); }方法名言简意赅,很容易理解。
那么有时我们需要时时的监听网络状态,那么怎么办呢?其实在Reachability中也是有处理的,该对象会监听网络状态的改变,并发出一个名为 “kReachabilityChangedNotification”的notification,这个字符串在Reachability.m中定义,
NSString *const kReachabilityChangedNotification =@"NetworkReachabilityChangedNotification";
如果你想在应用中时时的监听网络状态,只需要注册这个notification的接收器。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
当网络状态改变时就会回调该方法
- (void)reachabilityChanged:(NSNotification *)note { Reachability* curReach = [note object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); //得到当前网络状态 self.netStatus = [curReach currentReachabilityStatus]; }
相关文章推荐
- ios 网络状态的判断和时时更新
- iOS开发 使用AFNetworking判断网络状态
- iOS开发-关于网络状态的判断
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- iOS-iPhone开发之判断当前的网络状态
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- iOS开发——Reachability和AFNetworking判断网络连接状态
- iOS开发——Reachability和AFNetworking判断网络连接状态
- iOS 开发判断监测当前网络状态
- iOS网络开发编程之NSURLConnection详解 iOS网络层常用的库如ASIHTTPRequest,AFNetworking,MKNetworkKit等知名的第三方库。随着ASI不再更新,楼主
- iOS开发网络篇-检测网络状态
- 【iOS解决方案】如何判断当前网络连接状态(网络是否正常)
- iOS开发之runtime的运用-获取当前网络状态
- iOS开发之监测网络状态
- iOS开发之网络编程--XCode7 更新以来需要手动设置的内容
- iOS开发网络—10监测网络状态
- iOS开发 - 获取当前网络状态
- ios开发网络第一天之04线程的状态