IOS开发入门之监测网络状态实现方案
凌雪 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved