AFN 监听网络情况

今天自己动手做了一个小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 监听网络情况)