本文的意义
- 利用苹果原生的类Reachability,实时监控网络的状态
- 利用框架AFNetworking实时监控网络状态
网络状态实时监控的目的
让用户了解自己的网络状态,防止一些误会
根据用户的网络状态进行智能处理,节省用户流量,提高用户体验
WIFI\3G网络:自动下载高清图片
低速网络:只下载缩略图
没有网络:只显示离线的缓存数据
苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
利用苹果原生的类Reachability实现实时监控网络状态
Reachability的使用步骤
- 添加框架SystemConfiguration.framework
- 添加源代码
- Reachability.h
- Reachability.m - 包含头文件
实现代码如下:
- (void)appleMonitoring
{
// 监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
// 开始监控网络
self.reachability = [Reachability reachabilityForInternetConnection];
[self.reachability startNotifier];
}
// 重写控制器的dealloc方法,当控制器销毁的时候移除通知
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
// 关闭监控
[self.reachability stopNotifier];
self.reachability = nil;
}
// 获取网络状态
- (void)getNetworkStatus
{
// 判断当前网络是否是WiFi
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
NSLog(@"是wifi");
// 判断当前网络是否是手机自带网络
} else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
NSLog(@"是手机自带网络");
} else {
NSLog(@"网络有问题");
}
}
利用流行框架AFNetworking实现实时监控网络状态
实现代码如下:
- (void)afnMonitoring
{
// 开始网络监控
AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"-----当前的网络状态---%zd", status);
}];
[mgr startMonitoring];
// 拿到当前网络状态
// mgr.networkReachabilityStatus;
}