OC-18.监听iPhone的网络状态

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

使用系统的方法来监听网络状态系统的方法是通过通知机制来实现网络状态的监听实现网络状态监听的步骤

定义Reachability类型的成员变量来保存网络的状态

@PRoperty (nonatomic,strong) Reachability *reachability;

注册为通知中心的的观察者

// 在通知中心注册观察者

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];/**

* getNetworkStatus:监听到通知的回调方法

* kReachabilityChangedNotification:通知的类型,即网络状态发生改变时,触发通知

* object:传递给getNetworkStatus回调方法的参数

*/// 获取并保存网络状态self.reachability = [Reachability reachabilityForInternetConnection];// 开始监听

[self.reachability startNotifier];

在监听到通知的触发方法中判断网络的状态

- (void)getNetworkStatus

{if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable)

{NSLog(@"是WIFI");

}elseif ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable)

{NSLog(@"是手机自带网络");

}else

{NSLog(@"网络有问题");

}

}

将观察者从通知中心移除,停止监听,清空网络监听对象

- (void)dealloc

{

[[NSNotificationCenter defaultCenter] removeObserver:self];

[self.reachability stopNotifier];self.reachability =nil;

}

使用AFNetworking监听网络状态通过AFN监听网络状态比较简单实现网络状态监听的

获取AFNetworkReachabilityManager的实例

AFNetworkReachabilityManager *manager =[AFNetworkReachabilityManager sharedManager];

设置manager在网络发生变化的时回调的Block

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

NSLog(@"----当前网络状态---%zd", status);

}];

/*** status:表示当前网络的状态,是个枚举类型变量,具有以下取值*AFNetworkReachabilityStatusUnknown = -1*AFNetworkReachabilityStatusNotReachable = 0*AFNetworkReachabilityStatusReachableViaWWAN = 1*AFNetworkReachabilityStatusReachableViaWiFi = 2*/

开始监听

[manager startMonitoring];

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航