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#

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容