今天自己动手做了一个小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];
这是实时监听网络情况的
注意:打开监听需要时间,比较短。
网友评论