可达性在模拟器上工作但不在设备上工作

时间:2012-11-06 08:28:12

标签: iphone ios ipad reachability

在我的项目中,我正在使用Apple提供的Reachability类。当没有互联网连接时,我正在显示警告信息。当我在模拟器上测试时,一切正常,但是当我在iPad上运行它时,没有互联网时就不会显示警告信息。

我在iOS 5.0上运行代码。

任何帮助都将不胜感激。

编辑:

-(BOOL)isInternetConnectionPresent{

Reachability *objReachability = [Reachability reachabilityForInternetConnection];    
NetworkStatus internetStatus = [objReachability currentReachabilityStatus];

if(internetStatus != NotReachable)
{
    return YES;
}


   return NO;
}

更新:

使用NSLog进行调试。似乎WWAN存在一些问题,即使没有SIM卡也是如此。重启iPad&关闭&再次在Wi Fi上。现在它工作正常。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您必须检查所有 NetworkStatus 并交叉检查设备 Wifi连接状态

示例:

// to check if, wifi connected properly in current device.
- (BOOL)networkCheck {

    Reachability *wifiReach = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [wifiReach currentReachabilityStatus];

    switch (netStatus)
    {
        case NotReachable:
        {
            NSLog(@"NETWORKCHECK: Not Connected");          
            return NO;
            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"NETWORKCHECK: Connected Via WWAN");
            return NO;
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"NETWORKCHECK: Connected Via WiFi");
            return YES;
            break;
        } 
    }
    return false;

}

答案 1 :(得分:0)

在我的情况下,以下代码段与iOS 5完美配合。我在这里检查WIFI的互联网连接。

- (NSString *)stringFromStatus:(NetworkStatus ) status {
NSString *string;
switch(status) {
    case NotReachable:
        string = @"Not Reachable";
        break;
    case ReachableViaWiFi:
        string = @"Reachable via WiFi";
        break;
    case ReachableViaWWAN:
        string = @"Reachable via WWAN";
        break;
    default:
        string = @"Unknown";
        break;
}
return string;

}

------------------------现在可以查看以下代码行。

 Reachability *reach =[Reachability reachabilityForLocalWiFi] ;
NetworkStatus status = [reach currentReachabilityStatus];
NSLog(@"%@", [self stringFromStatus: status]);

if ([[self stringFromStatus: status] isEqualToString: @"Not Reachable"]) 
{
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Connection Failure !"
                          message:@"Your Device is not Connected to any active WIFI Connection."
                          delegate:self
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
    [alert show];
}
else
{ //connected to internet.

}