AFNetworking网络监测及访问管理

作者 : 开心源码 本文共1318个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共200人阅读

AFNetworking已经将网络状态封装为AFNetworkReachabilityManager,这是一个单例,可以直接获取:

AFNetworkReachabilityManager *reachManager = [AFNetworkReachabilityManager manager];

另外也可以从AFHTTPSessionManagerreachabilityManager属性获取,两者是一致的。

网络状态监听

通过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网络监测及访问管理

发表回复