Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 可达性返回连接到3G时通过WiFi可达_Ios_Objective C_Reachability - Fatal编程技术网

Ios 可达性返回连接到3G时通过WiFi可达

Ios 可达性返回连接到3G时通过WiFi可达,ios,objective-c,reachability,Ios,Objective C,Reachability,在iphone5s中,WiFi被检测为3G,在我的iphone4中,这是正常的。 两者都在iOS 7.1中 在某些设备中也会发生这种情况 禁用WiFi并连接3G,我仔细检查了互联网连接是否正常,以及设备本身是否正常 知道为什么吗 编辑1: 代码如下: - (void)registerReachabilityNotification { [[NSNotificationCenter defaultCenter] addObserver:self

在iphone5s中,WiFi被检测为3G,在我的iphone4中,这是正常的。 两者都在iOS 7.1中

在某些设备中也会发生这种情况

禁用WiFi并连接3G,我仔细检查了互联网连接是否正常,以及设备本身是否正常

知道为什么吗

编辑1:

代码如下:

- (void)registerReachabilityNotification
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(checkNetworkStatus:)
                                                 name:kReachabilityChangedNotification object:nil];

    Reachability *reach = [Reachability reachabilityForInternetConnection];
    [reach startNotifier];

    NSNotification *note = [[NSNotification alloc] initWithName:kReachabilityChangedNotification object:reach userInfo:nil];
    [self checkNetworkStatus:note];
}

- (void)checkNetworkStatus:(NSNotification*)notification
{
    Reachability *reach = notification.object;
    NSParameterAssert([reach isKindOfClass: [Reachability class]]);

    NetworkStatus internetStatus = [reach currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            NSLog(@"No internet connection.");
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"The internet is working via WIFI.");
            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"The internet is working via WWAN.");
            break;
        }
    }
}
编辑1:

此代码:

NetworkStatus nStats = [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus];

    if (nStats != ReachableViaWiFi) {
        NSLog(@"nStats != ReachableViaWiFi");
    }

    if (nStats == ReachableViaWiFi) {
        NSLog(@"WIFI");
    }
    else if (nStats == ReachableViaWWAN) {
        NSLog(@"WWAN");
    }
    else if (nStats == NotReachable) {
        NSLog(@"not reachable");
    }
    else {
        NSLog(@"undetermined reachability.");
    }
给我这个:

Reachability Flag Status: WR t------ localWiFiStatusForFlags
nStats != ReachableViaWiFi
not reachable

我的方法完全错误,下面是正确方法的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"CONNECTION: %@", NSStringFromNetworkStatus([MobileControlHandler checkConnection]));
    return YES;
}

+ (NetworkStatus)checkConnection
{
    NetworkStatus wifiStatus = [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus];
    NetworkStatus internetStatus = [[Reachability reachabilityForInternetConnection] currentReachabilityStatus];

    if (wifiStatus == ReachableViaWiFi) {
        return ReachableViaWiFi;
    }
    else if (wifiStatus != ReachableViaWiFi && internetStatus == ReachableViaWWAN) {
        return ReachableViaWWAN;
    }
    else {
        return NotReachable;
    }
}

FOUNDATION_EXPORT NSString *NSStringFromNetworkStatus(NetworkStatus netStatus)
{
    if (netStatus == ReachableViaWiFi) {
        return @"ReachableViaWiFi";
    } else if (netStatus == ReachableViaWWAN) {
        return @"ReachableViaWWAN";
    } else if (netStatus == NotReachable) {
        return @"NotReachable";
    } else {
        return @"Undetermined reachbility flag";
    }
}
绘图:


只需从苹果下载新的可达性类

它也可以在ios 8上运行

有关iOS应用程序开发的更多互动内容,请查看

这两部手机使用的是同一个载波吗?是的,它们都使用同一个载波。我想请您重新回答这个问题,因为这实际上是一个编码问题<代码>可达性是苹果公司提供的一个类,用于证明互联网是否可用。@Idan我们需要更多信息。。。您是否在iPhone 5S上启用了wifi并加入了网络?我认为可达性总是返回可用的“最佳”网络选项。
Reachability Flag Status: WR t------ localWiFiStatusForFlags
Reachability Flag Status: WR t----l- networkStatusForFlags
CONNECTION: ReachableViaWWAN
#import <Reachability.h>
if ([Reachability currentReachabilityStatus] == NotReachable) {
  ...
}