您的位置:首页 > 理论基础 > 计算机网络

iOS-iPhone开发之判断当前的网络状态

2015-01-22 10:14 405 查看
第一种:

1、添加 framework:

将 SystemConfiguration.framework 添加进工程。

2、下载 http://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

复制里面的 Reachability.h 和 Reachability.m 到项目中

3、调用的代码:

-(NSString*) GetCurrntNet

{

NSString* result;

Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"];

switch ([r currentReachabilityStatus]) {

caseNotReachable: // 没有网络连接

result=nil;

break;

caseReachableViaWWAN: // 使用3G网络

result=@"3g";

break;

caseReachableViaWiFi: // 使用WiFi网络

result=@"wifi";

break;

}

return result;

}

以上代码在虚拟机中的模拟器上测试,有异常,难道测试网络联通不能使用模拟器?

另外,不管是不是插着网线,模拟器的WIFI始终是连着的,不管电脑本身的网络是否断开(同样是在虚拟机中)

+(BOOL) IsEnableWIFI { //始终返回YES

return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);

}

而3G/GPRS始终是断开的

+ (BOOL) IsEnable3G { //一直返回NO

return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);

}

第二种:

1、添加 framework:

将 SystemConfiguration.framework 添加进工程。
2.

if ([self
isNetworkEnabled])
{

//联网正常
}

else
{

//网络不正常

[ToolClass
showAlertInView:self.view
withText:@"亲,网络断了哦,请检查网络连接"];

}
3.

//-判断当前网络是否可用
-(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: