美文网首页iOS 开发
AFN 监听网络情况

AFN 监听网络情况

作者: 疾风小超 | 来源:发表于2016-05-04 12:32 被阅读1111次

今天自己动手做了一个小Demo,是结合SDWebImage框架,根据不同网络状况来确定使用高清原图还是缩略图。

决定使用AFN监听网络类型,因为AFN监听网络比苹果自带的简单的多。

下面贴上使用网络类型的代码

AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
        // 判断网络情况
        if (mgr.isReachableViaWiFi) {
            // 展示高清图
            [self.jf_image sd_setImageWithURL:[NSURL URLWithString:jfModel.originImage] placeholderImage:placeholderImage];
        }
        else if (mgr.isReachableViaWWAN) {
            // 是否3G/4G下载原图
            BOOL isAlwaysDownloadOriginImage = NO;
            if (isAlwaysDownloadOriginImage) {
                // 是否展示高清图
                [self.jf_image sd_setImageWithURL:[NSURL URLWithString:jfModel.originImage] placeholderImage:placeholderImage];
            }
            else {
                // 下载显示小图
                [self.jf_image sd_setImageWithURL:[NSURL URLWithString:jfModel.thumbnailImage] placeholderImage:placeholderImage];
            }
        }
        else {
                // 取出缓存中的缩略图
            UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:jfModel.thumbnailImage];
            if (thumbnailImage) {
                // 展示缩略图
                [self.jf_image sd_setImageWithURL:[NSURL URLWithString:jfModel.thumbnailImage] placeholderImage:placeholderImage];
            }
            else {
                // 展示占位图
                [self.jf_image sd_setImageWithURL:nil placeholderImage:placeholderImage];
            }
        }

结果呢总是判断的网络是类型是 AFNetworkReachabilityStatusUnknown
后来发现AFN监听网络需要一开始代开监听。
贴上代码

// 监听网络状况
    AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
    [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                break;
            case AFNetworkReachabilityStatusNotReachable:
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                break;
            default:
                break;
        }
    }];
    [mgr startMonitoring];

这是实时监听网络情况的

注意:打开监听需要时间,比较短。

附上Demo地址:
https://github.com/jifengchao/AFN-SDWebImage-Use

借鉴文章:
http://www.jianshu.com/p/dabc0c6d083e#

相关文章

  • AFN 监听网络情况

    今天自己动手做了一个小Demo,是结合SDWebImage框架,根据不同网络状况来确定使用高清原图还是缩略图。 决...

  • AFN 监听网络

    AppDelegate中的didFinishLaunchingWithOptions中注册监听 AFNetwork...

  • ios自动刷新--数据请求

    AFNetworkReachabilityManager 这个类是AFN专门用来监听网络状态的,而且是实时监听,只...

  • AFN 3.0 小结

    GET请求 POST请求 AFN3.0下载方法 AFN3.0 上传 监测当前网络状态(网络监听) 勤学如早春之苗,...

  • AFNetworking

    一、AFN的GET和POST请求 二、AFN的"下载+上传+响应体的几种解析方式+网络状态监听"

  • iOS AFNetworking检测网络状态

    创建网络监听者管理者对象 AFNetworkReachabilityManager *manager = [AFN...

  • IOS监听网络状态&以及方法冲突解决

    首先,项目要在App打开时监听网络状态,Wi-Fi和运营商有网络时开启MQTT连接。利用AFN实现网络状态监听。 ...

  • iOS AFN监听网络状态

    在- (BOOL)application:(UIApplication *)application didFini...

  • 使用AFN进行网络状态监测

    使用AFN进行网络状态监测,需要用到AFNetworkReachabilityManager 1.创建监听管理者 ...

  • 利用AFN来监听网络状态

    方法一:通过block来获取,这种方式很常见。 方法二:通过通知来获取。 AFNetworkingReachabi...

网友评论

    本文标题:AFN 监听网络情况

    本文链接:https://www.haomeiwen.com/subject/rwmrrttx.html