iOS可达性未检测到“;“无服务”;在该设备中,作为;“无法到达”;

iOS可达性未检测到“;“无服务”;在该设备中,作为;“无法到达”;,ios,reachability,connectivity,cellular-network,Ios,Reachability,Connectivity,Cellular Network,我正在使用Apple提供的Reachability类,我正在监听reachabilityChanged:通知: - (void)reachabilityChanged:(NSNotification *)notification { Reachability *reach = [notification object]; if ([reach isKindOfClass: [Reachability class]]) { NetworkStatus status =

我正在使用Apple提供的
Reachability
类,我正在监听
reachabilityChanged:
通知:

- (void)reachabilityChanged:(NSNotification *)notification
{
   Reachability *reach = [notification object];

   if ([reach isKindOfClass: [Reachability class]]) {
       NetworkStatus status = [reach currentReachabilityStatus];

       if ((status == ReachableViaWiFi) || (status == ReachableViaWWAN)) {
          // Some operations here
       }
   }
}
当我在设置中设置飞行模式或禁用WiFi和蜂窝数据时,我在
可达性更改:
中获得“不可达”状态,但当我的设备似乎出于任何原因(在设置中启用了通信)暂时失去连接时,“不可达”状态似乎没有被检测到

我用干扰机做了一些测试,当设备在状态栏中转到“无服务”并调用
reachabilityChanged:
时,我看到
NetworkStatus
是“reachable viawan”,而不是我所期望的“NotReachable”

我需要在设备中检测到这样的“无服务”状态,我怎么能呢?

信用卡归谁。这对我很有用:

- (BOOL)networkCheck
{
    Reachability *wifiReach = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [wifiReach currentReachabilityStatus];

    switch (netStatus)
    {
        case NotReachable:
        {
            NSLog(@"%@",@"NETWORKCHECK: Not Connected");    
            return false;
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"%@",@"NETWORKCHECK: Connected Via WiFi");       
            return true;
            break;
        } 
        case ReachableViaWWAN:
        {
            NSLog(@"%@",@"NETWORKCHECK: Connected Via WWAN");
            return true;
            break;
        }
    }
    return false;
 }
然后在可到达的Viawan案例中:

case ReachableViaWWAN:
{
    NSLog(@"%@",@"NETWORKCHECK: Connected Via WWAN");
    NSData *responseData = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"www.google.com"]] returningResponse:nil error:nil];
    if (responseData != nil)
    {
        return true;
        break;
    }
    else
    {
        return false;
        break;
    }

}

您是否通过usb连接到您的计算机?它正在共享网络连接吗?@Fogmeister它被插入以查看Xcode中的日志,但它只支持蜂窝数据。但是,如果您的计算机正在通过usb共享其Internet连接,则手机仍将具有连接。@Fogmeister我已断开设备与计算机的连接,并且当设备“无服务”时,我仍处于“可访问的网络”状态……您解决过这个问题吗?我也有同样的问题。