iOS开发--监测网络变化

     通常在APP的某些界面,需要通过网络获取数据更新界面。应用程序通过建立网络状态监听,当网络从断开变为连接状态后,自动刷新页面数据,因此不需要用户手动刷新页面,提升了产品的用户体验。


一、包含头文件

#import "Reachability.h"

同时在ViewContorller中添加实例变量:Reachability *_networkConn;


二、建立网络变化监听

   网络变化包括从断开变为连接、连接变为断开两种情况,任意一种情况发生,app都会收到网络变化通知。 在viewDidLoad方法中添加如下代码:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
    _networkConn = [Reachability reachabilityForInternetConnection];
    [_networkConn startNotifier];
    其中,networkStateChange函数会在网络发生变化的时候被调用。


三、获取网络状态

    在接受到网络变化通知后,通知并没有告知当前的网络状态,所以我们并不知道当前网络是处于断开还是连接,需要主动探测,探测方法如下:

- (BOOL)isNetworkEnable
{
    BOOL flag = YES;
    Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"];
    switch ([r currentReachabilityStatus]) {
        case NotReachable:
            flag = NO;
            break;
        case ReachableViaWWAN:
            break;
        case ReachableViaWiFi:
            break;
            
        default:
            break;
    }
    
    return flag;
}

四、刷新界面

- (void)networkStateChange
{
    if ([self isNetworkEnable]) {
        //在此刷新界面
    }
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。