版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_30657013/article/details/51783386
iOS网络状态实时获取
关于iOS网络状态获取之前一直在用Reachability,后来发现无法实时获得网络状态的变化,并且不能很好的判断网速极差情况下的网络状态,最近发现了一个好用的开源库RealReachability
github地址:https://github.com/dustturtle/RealReachability
依赖环境:iOS6+,Xcode5.0+,支持ARC.
添加方法:
最方便的:pod: pod ‘RealReachability
手动: 下载后目录结构如下
把RealReachability加入工程,并添加SystemConfiguration.framework依赖库.
在需要使用的地方导入头文件:
#import "RealReachability/RealReachability.h”
主要使用途径有两种:
1.实时触发
在网络状态发升改变的时候会主动发出通知
//可以添加到didFinishLaunchingWithOptions中 程序启动即开始添加监听
[GLobalRealReachabilitystartNotifier];
[[NSNotificationCenterdefaultCenter] addObserver:self
selector:@selector(networkChanged:)
name:kRealReachabilityChangedNotification
object:nil];
//在接收到通知后判断网络状态
- (void)networkChanged:(NSNotification *)notification
{
RealReachability *reachability = (RealReachability *)notification.object;
ReachabilityStatus status = [reachabilitycurrentReachabilityStatus];
switch (status)
{
caseRealStatusUnknown:
{
NSLog(@"Unknown");
break;
}
caseRealStatusNotReachable:
{
NSLog(@"NotReachable");
break;
}
caseRealStatusViaWiFi:
{
NSLog(@"wifi");
break;
}
caseRealStatusViaWWAN:
{
NSLog(@"ViaWWAN");
break;
}
default:
break;
}
}
2.主动监测网络状态
[GLobalRealReachability reachabilityWithBlock:^(ReachabilityStatus status)
{
switch (status)
{
case RealStatusUnknown:
{
NSLog(@"Unknown");
break;
}
case RealStatusNotReachable:
{
NSLog(@"NotReachable");
break;
}
case RealStatusViaWiFi:
{
NSLog(@"wifi");
break;
}
case RealStatusViaWWAN:
{
NSLog(@"ViaWWAN");
WWANAccessType accessType = [GLobalRealReachability currentWWANtype];
if (accessType == WWANType2G)
{
NSLog(@"RealReachabilityStatus2G");
}
else if (accessType == WWANType3G)
{
NSLog(@"RealReachabilityStatus3G");
}
else if (accessType == WWANType4G)
{
NSLog(@"RealReachabilityStatus4G");
}
else
{
NSLog(@"Unknown RealReachability WWAN Status, might be iOS6");
}
break;
}
default:
break;
}
}];