凌雪
2018-10-23
来源 :网络
阅读 1131
评论 0
摘要:本文将带你了解IOS开发入门iOS开发中监测网络状态实现方案,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门iOS开发中监测网络状态实现方案,希望本文对大家学IOS有所帮助。
iOS开发中监测网络状态实现方案,我们常常会碰到这样的需求,在2G网络状态下不下载高清图片,只查看文字,在wifi、3G、4G可以下载高清图片,以达到提升用户体验的目的。最近在自己的项目里面也有类似的需求,查找资料,稍微修改了苹果官方的Reachability实时监测网络状态变化。
1、不废话,直接上干货
在Reachability.m文件中导入CoreTelephony库
#import
找到此方法if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)修改,对了 ,先修改枚举值在Reachability.h中
typedef enum : NSInteger { NotReachable = 0, ReachableViaWiFi, ReachableViaWWAN, kRaeachableVia4G, kReachableVia2G, kReachableVia3G} NetworkStatus;
增加代码
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) { /* ... but WWAN connections are OK if the calling application is using the CFNetwork APIs. */ returnValue = ReachableViaWWAN; if (IOS_VERSION >= 7.0) { CTTelephonyNetworkInfo *phonyNetwork = [[CTTelephonyNetworkInfo alloc] init]; NSString *currentStr = phonyNetwork.currentRadioAccessTechnology; if (currentStr) { if ([currentStr isEqualToString:CTRadioAccessTechnologyLTE]) { return kRaeachableVia4G; }else if ([currentStr isEqualToString:CTRadioAccessTechnologyGPRS]|| [currentStr isEqualToString:CTRadioAccessTechnologyEdge]){ return kReachableVia2G; }else{ return kReachableVia3G; } } } if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) { if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired) { return kReachableVia2G; } return kReachableVia3G; } return ReachableViaWWAN; }
2、在需要的地方引入#import "Reachability.h"监听网络状态变化通知
- (void)viewDidLoad { [super viewDidLoad]; // 监测网络情况 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; NSString *remoteHostName = @"www.apple.com"; NSString *remoteHostLabelFormatString = NSLocalizedString(@"Remote Host: %@", @"Remote host label format string"); UILabel *remoteHostLabel = [[UILabel alloc] init]; remoteHostLabel.text = [NSString stringWithFormat:remoteHostLabelFormatString, remoteHostName]; self.hostReachability = [Reachability reachabilityWithHostName:remoteHostName]; [self.hostReachability startNotifier];}
3、记得在delloc里面销毁通知
- (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self];}
4、处理通知方法
- (void)reachabilityChanged:(NSNotification *)no{ Reachability* curReach = [no object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); NetworkStatus status = [curReach currentReachabilityStatus]; switch (status) { case NotReachable: NSLog(@"====当前网络状态不可达======="); //其他处理 self.kReachableVia = @"当前网络状态不可达"; break; case ReachableViaWiFi: NSLog(@"====当前网络状态为Wifi======="); self.kReachableVia = @"ReachableViaWiFi"; //其他处理 break; case kReachableVia2G: NSLog(@"====当前网络状态为2G======="); self.kReachableVia = @"kReachableVia2G"; break; case kReachableVia3G: NSLog(@"====当前网络状态为3G======="); //其他处理 self.kReachableVia = @"kReachableVia3G"; break; case kRaeachableVia4G: NSLog(@"====当前网络状态为4G======="); self.kReachableVia = @"kRaeachableVia4G"; //其他处理 break; default: NSLog(@"你是外星来的吗?"); //其他处理 self.kReachableVia = @"你是外星来的吗?"; break; }}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号