在iOS 7 iphone 5中使用错误的状态代码响应可达性

Adi*_*ane 4 objective-c reachability ios iphone-5 ios7

我在使用iOS 7的iPhone 5上遇到了奇怪的问题,我已经测试过与其他设备相同的代码,如iPad1,2,3和iPhone 4,4s等,包括iOS 7在内的不同iOS组合.

问题:

当我打开飞机模式时,我确实按预期获得了可达性通知状态,NotReachable但是在该应用程序收到状态代码ReachableViaWWAN不可预期的通知之后.

代码:

+(BOOL)checkReachability
{
    Reachability* internetReachable = [Reachability reachabilityForInternetConnection];
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)

    {
        case NotReachable:
        {
            DebugLog(@"The internet is down.");
            return NO;
            break;
        }
        default:
            return YES;
            break;
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我在开关之前添加了日志,它ReachableViaWWAN在飞机模式下返回状态.

可能的解决方法可能是:

ReachableViaWWAN在这种情况下添加案例并检查主机是否可达.并相应返回BOOL值.

有人遇到类似的问题?? 我搜索过但没有找到类似的情况.

提前致谢 !!

小智 10

我有同样的问题.解决方案是检查标志isConnectionRequired.文件说:

WWAN可能可用,但在建立连接之前不会处于活动状态.

BOOL isServerAvailable;
Reachability *reachability = [Reachability reachabilityForInternetConnection];

if ((reachability.isConnectionRequired) || (NotReachable == reachability.currentReachabilityStatus)) {
    isServerAvailable = NO;

} else if((ReachableViaWiFi == reachability.currentReachabilityStatus) || (ReachableViaWWAN == reachability.currentReachabilityStatus)){
    isServerAvailable = YES;
}
Run Code Online (Sandbox Code Playgroud)


mos*_*she 1

我遇到了这个问题并在这里找到了解决方案ReachableViaWWAN基本上,出于某种原因,在飞行模式下可以达到平衡。然而,还有另一个标志将指示是否必须首先建立连接。这个kSCNetworkReachabilityFlagsConnectionRequired标志在 Reachability 类中有一个很好的辅助方法,称为connectionRequired