通过RealReachability实现当前网络的监测
Posted goodmorningmr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过RealReachability实现当前网络的监测相关的知识,希望对你有一定的参考价值。
在一些消耗流量较大的应用中我们需要对当前的网络状态进行实时监测,根据用户的网络状态进行智能处理业务中的一些数据交换,节省用户流量,提高用户体验;使用户了解自己当前的网络状态,以免无辜背锅
方法一:RealReachability
RealReachability引入了ping能力(此方案流量开销最小,也最简单),实现了简单的实际网络连接监测。
在实际的项目中,我将RealReachability封装到了一个工具类中,代码如下
-(void)listenNetWorkingStatus{
GLobalRealReachability.hostForPing = @"www.baidu.com";
GLobalRealReachability.autoCheckInterval = 5.0f;
[GLobalRealReachability startNotifier];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(networkChanged:)
name:kRealReachabilityChangedNotification
object:nil];
ReachabilityStatus status = [GLobalRealReachability currentReachabilityStatus];
[self realNetworkingStatus:status];
}
- (void)networkChanged:(NSNotification *)notification
{
RealReachability *reachability = (RealReachability *)notification.object;
ReachabilityStatus status = [reachability currentReachabilityStatus];
[self realNetworkingStatus:status];
}
-(void)realNetworkingStatus:(ReachabilityStatus)status{
switch (status)
{
case RealStatusUnknown:
{
NSLog(@"~~~~~~~~~~~~~RealStatusUnknown");
self.netStatus = NetStatusUnknown;
break;
}
case RealStatusNotReachable:
{
NSLog(@"~~~~~~~~~~~~~RealStatusNotReachable");
self.netStatus = NetStatusNotReachable;
break;
}
case RealStatusViaWWAN:
{
NSLog(@"~~~~~~~~~~~~~RealStatusViaWWAN");
self.netStatus = NetStatusViaWWAN;
break;
}
case RealStatusViaWiFi:
{
NSLog(@"~~~~~~~~~~~~~RealStatusViaWiFi");
self.netStatus = NetStatusViaWiFi;
break;
}
default:
break;
}
}
外部调用下面方法后即可完成网络的监测功能
[[NetChackManager shareManager] listenNetWorkingStatus];
以上是关于通过RealReachability实现当前网络的监测的主要内容,如果未能解决你的问题,请参考以下文章