判断网络状态不准确,请大神帮忙看看为什么?
使用Reachability 3.5 ,测试时候先断开网络,当下判定status 为NotReachable,而当连接网络后status 的返回值为:NotReachable ,具体代码如下:请大神们 帮帮忙看下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//开启网络状况的监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
self.isReachable = YES;
switch ([self.hostReach currentReachabilityStatus]) {
case NotReachable:
self.isReachable = NO;
//NSLog(@"notReachable");
break;
case ReachableViaWiFi:
self.isReachable = YES;
//NSLog(@"WIFI");
break;
case ReachableViaWWAN:
self.isReachable = YES;
//NSLog(@"3G");
break;
}
//开始监听,会启动一个run loop
[self.hostReach startNotifier];
return YES;
}
-(void)reachabilityChanged:(NSNotification *)note
{
self.isFirstReachable = YES;
Reachability *currReach = [note object];
NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
//对连接改变做出响应处理动作
NetworkStatus status = [currReach currentReachabilityStatus];
//如果没有连接到网络就弹出提醒实况
if(status == NotReachable)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
self.isReachable = NO;
return;
}
if(status == ReachableViaWiFi || status == ReachableViaWWAN)
{
...
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//开启网络状况的监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
self.isReachable = YES;
switch ([self.hostReach currentReachabilityStatus]) {
case NotReachable:
self.isReachable = NO;
//NSLog(@"notReachable");
break;
case ReachableViaWiFi:
self.isReachable = YES;
//NSLog(@"WIFI");
break;
case ReachableViaWWAN:
self.isReachable = YES;
//NSLog(@"3G");
break;
}
//开始监听,会启动一个run loop
[self.hostReach startNotifier];
return YES;
}
-(void)reachabilityChanged:(NSNotification *)note
{
self.isFirstReachable = YES;
Reachability *currReach = [note object];
NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
//对连接改变做出响应处理动作
NetworkStatus status = [currReach currentReachabilityStatus];
//如果没有连接到网络就弹出提醒实况
if(status == NotReachable)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
self.isReachable = NO;
return;
}
if(status == ReachableViaWiFi || status == ReachableViaWWAN)
{
...
}
}
...全文
相关推荐
swift-iOS完美的网络状态判断工具
大多数App都严重依赖于网络,一款用户体验良好的的app是必须要考虑网络状态变化的.iOSSinger下一般使用Reachability这个类来检测网络的变化.
Android 判断网络状态及开启网路
Android 判断网络状态及开启网路 在使用Android连接网络的时候,并不是每次都能连接到网络,在这个时候,我们最好是在程序启动的时候对网络的状态进行一下判断,如果没有网络则进行即时提醒用户进行设置。 要判断网络状态,首先需要有相应的权限,下面为权限代码: 即允许访问网络状态: 下面为判断代码: /** * 测试网络 */ public boolean TestNetWork() { if(conte
iOS 判断网络状态
NULL 博文链接:https://332016912-qq-com.iteye.com/blog/1973711
Android判断网络状态的代码
主要为大家详细介绍了Android判断网络状态的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
iOS判断当前网络状态
判断当前网络是2G,还是Wifi,还是,3G,还是4G


