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

第一种:

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:判断是否通过蜂窝网覆盖的连接,比如EDGEGPRS或者目前的3G.主要是区别通过WiFi的连接。

        BOOL flagsReachable = ((flags & kSCNetworkFlagsReachable) != 0);

        BOOL connectionRequired = ((flags & kSCNetworkFlagsConnectionRequired) != 0);

        BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;

        bEnabled = ((flagsReachable && !connectionRequired) || nonWiFi) ? YES : NO;

    }

    

    return bEnabled;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值