在网络应用中,需要对用户设备的网络状态进行实时监控,目的是
让用户了解自己的网络状态,防止一些误会(比如怪应用不好)
根据用户的网络状态进行智能处理,节省用户流量,提高用户体验
WiFi\3G网络:自动下载高清图片
低速网络:只下载缩略图
没有网络:只显示离线的缓存数据
1.使用AFNetworking框架
- (void)afnMonitoring { AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSLog(@"------当前网络状态%zd",status); }]; [manager startMonitoring]; }
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { AFNetworkReachabilityStatusUnknown = -1,//未知网络 AFNetworkReachabilityStatusNotReachable = 0,//没有网络 AFNetworkReachabilityStatusReachableViaWWAN = 1,//蜂窝网络 AFNetworkReachabilityStatusReachableViaWiFi = 2,//WiFi网络 }
2.使用苹果官方的Reachability
下载地址:
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
- (void)getNetworkStatus { if([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) { NSLog(@"是WiFi网络"); }else if([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) { NSLog(@"是蜂窝网络"); }else { NSLog(@"网络故障"); } }
长期监控网络的状态
- (void)applyMonitoring { //监听通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil]; //开始监控网络 self.reachability = [Reachability reachabilityForInternetConnection]; [self.reachability startNotifier]; }
取消任务
- (void)dealloc { [self.netReachability stopNotifier]; [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil]; }
时间: 2024-10-13 21:33:05