【iOS解决方案】如何判断当前网络连接状态(网络是否正常)
来源:互联网 发布:保险网络大学报名 编辑:程序博客网 时间:2024/04/29 20:11
众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的网络连接状态,如果没有网络,就不再请求url,省去不必要的步骤,所以,这个如何判断?其实很简单。
前提:工程添加:SystemConfiguration.framework framework
然后在需要判断的类中包含头文件:
- #import "Reachability.h"
【如果你使用的ASIHTTPRequest类库,那么直接import Reachbility.h就可以了,ASIHTTP类库里包含Reachbility.h和.m】
下面是我写的一个方法:
- -(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 = NSLocalizedString(INFO_NetNoReachable, nil);
- hud.minSize = CGSizeMake(132.f, 108.0f);
- [hud hide:YES afterDelay:3];
- return NO;
- }
- return isExistenceNetwork;
- }
所以举一反三,如果你不单单是判断是否网络通畅,而是要判断是WIFI或3G,再写一个isEnableWIFI的方法,具体判断方法就不用再赘述了吧,currentReachabilityStatus判断之。
众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的网络连接状态,如果没有网络,就不再请求url,省去不必要的步骤,所以,这个如何判断?其实很简单。
前提:工程添加:SystemConfiguration.framework framework
然后在需要判断的类中包含头文件:
- #import "Reachability.h"
【如果你使用的ASIHTTPRequest类库,那么直接import Reachbility.h就可以了,ASIHTTP类库里包含Reachbility.h和.m】
下面是我写的一个方法:
- -(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 = NSLocalizedString(INFO_NetNoReachable, nil);
- hud.minSize = CGSizeMake(132.f, 108.0f);
- [hud hide:YES afterDelay:3];
- return NO;
- }
- return isExistenceNetwork;
- }
所以举一反三,如果你不单单是判断是否网络通畅,而是要判断是WIFI或3G,再写一个isEnableWIFI的方法,具体判断方法就不用再赘述了吧,currentReachabilityStatus判断之。
另外一种方法:
将 SystemConfiguration.framework 添加进工程:
+(BOOL) isNetworkEnabled
{
BOOL bEnabled = FALSE;
NSString *url = @"www.baidu.com";
SCNetworkReachabilityRef ref =SCNetworkReachabilityCreateWithName(NULL, [url UTF8String]);
SCNetworkReachabilityFlags flags;
bEnabled = SCNetworkReachabilityGetFlags(ref, &flags);
CFRelease(ref);
if (bEnabled) {
// kSCNetworkReachabilityFlagsReachable:能够连接网络
// kSCNetworkReachabilityFlagsConnectionRequired:能够连接网络,但是首先得建立连接过程
// kSCNetworkReachabilityFlagsIsWWAN:判断是否通过蜂窝网覆盖的连接,比如EDGE,GPRS或者目前的3G.主要是区别通过WiFi的连接。
BOOL flagsReachable = ((flags &kSCNetworkFlagsReachable) != 0);
BOOL connectionRequired = ((flags &kSCNetworkFlagsConnectionRequired) != 0);
BOOL nonWiFi = flags &kSCNetworkReachabilityFlagsTransientConnection;
bEnabled = ((flagsReachable && !connectionRequired) || nonWiFi) ? YES : NO;
}
return bEnabled;
}
- 【iOS解决方案】如何判断当前网络连接状态(网络是否正常)
- 如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- IOS中如何判断当前网络状态是否可用
- [ios开发]判断网络连接是否正常
- <IOS> 判断当前网络是否连接
- IOS中如何判断当前网络状态
- IOS中如何判断当前网络状态
- IOS中如何判断当前网络状态
- 判断网络是否连接正常
- 判断网络是否连接正常
- 判断网络连接是否正常
- 判断网络是否连接正常
- iOS中如何判断网络连接状态
- 判断当前网络是否连接
- gdal应用-gdalwarp
- TortoiseGit 连接oschina不用每次输入用户名和密码的方法
- 查找在a表且不在b表的数据
- InstallShield创建自定义对话框 实例2
- android 编译出来的执行文件 not executable: magic 7F45
- 【iOS解决方案】如何判断当前网络连接状态(网络是否正常)
- gdal应用-gdal_translate
- '_ConnectionPtr' : missing storage-class or type specifiers
- STM32中printf重定向到串口
- 一致性哈希算法
- Quartz2D之渐变使用初步
- mac 编辑 .bash_profile
- linux安装使用svn
- Qt程序发布