检测网络状态
在网络应用中,需要对用户设备的网络状态进行实时监控,目的是
让用户了解自己的网络状态,防止一些误会(比如怪应用不好)
根据用户的网络状态进行智能处理,节省用户流量,提高用户体验
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
下载地址:
- (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]; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步