获取网络状态
Posted 「违规用户」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取网络状态相关的知识,希望对你有一定的参考价值。
众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的网络连接状态,如果没有网络,就不再请求url,省去不必要的步骤,所以,这个如何判断?其实很简单。
前提:工程添加:SystemConfiguration.framework framework
去苹果API里搜索Reachability,下载demo,把demo里的Reachability.h和Reachability.m拖到自己的工程里
然后在需要判断的类中包含头文件:
?1 |
# import "Reachability.h"
|
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
-(BOOL) isConnectionAvailable
BOOL isExistenceNetwork = YES;
Reachability *reach = [Reachability reachabilityWithHostName:@
"www.apple.com"
];
switch
([reach currentReachabilityStatus])
case
NotReachable:
isExistenceNetwork = NO;
//NSLog(@"notReachable");
break
;
case
ReachableViaWiFi:
isExistenceNetwork = YES;
//NSLog(@"WIFI");
break
;
case
ReachableViaWWAN:
isExistenceNetwork = YES;
//NSLog(@"3G");
break
;
if
(!isExistenceNetwork)
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
//<span style="font-family: Arial, Helvetica, sans-serif;">MBProgressHUD为第三方库,不需要可以省略或使用AlertView</span>
hud.removeFromSuperViewOnHide =YES;
hud.mode = MBProgressHUDModeText;
hud.labelText = @
"当前网络不可用,请检查网络连接"
;
//提示的内容
hud.minSize = CGSizeMake(
132
.f,
108
.0f);
[hud hide:YES afterDelay:
3
];
return
NO;
return
isExistenceNetwork;
|
所以举一反三,如果你不单单是判断是否网络通畅,而是要判断是WIFI或3G,再写一个isEnableWIFI的方法,具体判断方法就不用再赘述了吧,currentReachabilityStatus判断之。
如果工程用到AFNetworking,如下代码使用AFNetworkReachabilityManager检测网络状态进行xmpp连接监控
- (void)networkReachabilityStatusBeMonitoring
[_reachability startMonitoring];
__block NWXmppManager *ws = self;
[_reachability setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
以上是关于获取网络状态的主要内容,如果未能解决你的问题,请参考以下文章