AFNetworking网络监测及访问管理
AFNetworking已经将网络状态封装为AFNetworkReachabilityManager,这是一个单例,可以直接获取:
AFNetworkReachabilityManager *reachManager = [AFNetworkReachabilityManager manager];
另外也可以从AFHTTPSessionManager
的reachabilityManager
属性获取,两者是一致的。
网络状态监听
通过AFNetworkReachabilityManager的setReachabilityStatusChangeBlock方法,可以取得网络的状态变化:
[reachManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"3G/4G"); break; case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"wifi"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"没有联网"); break; default: NSLog(@"没有联网"); break; } }];
代码中将 AFNetworkReachabilityStatusUnknown
放到default中统一作为未联网解决。
网络操作管理
收到网络状态变化的通知后,需要将网络操作暂停或者开启,防止各个接口报错,这里假设网络操作使用的是:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
对应状态开启或者关闭操作:
[reachManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"3G/4G"); case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"wifi"); [manager.operationQueue setSuspended:NO]; break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"没有联网"); default: NSLog(@"没有联网"); [manager.operationQueue setSuspended:YES]; break; }}];
当前网络状态
值得注意的是以上方法在网络变化时,才能做相应解决,有时需要查看当前网络状态,可以通过AFNetworkReachabilityManager.networkReachabilityStatus直接判断。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » AFNetworking网络监测及访问管理
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » AFNetworking网络监测及访问管理