首页 文章

在WIFI上,reachabilityForLocalWiFi的状态是ReachableViaWWAN?

提问于
浏览
0

我需要检测设备是否连接到WIFI:

reach = [Reachability reachabilityForLocalWiFi];
status = [reach currentReachabilityStatus];

但当我连接到iPad上的WIFI时状态为WWAN,并且没有插入SIM卡,我即将用SIM测试状态 .

有谁知道原因?

编辑:

刚尝试使用SIM卡,它仍然被认为是ReachableViaWWAN,但实际连接是通过3G(服务器只允许3G连接,WIFI会失败),所以我猜可达性可能随时间而变化?

3 回答

  • 1

    最后我想通了,我使用的Reachability类是ASIHTTPRequest的一部分,ASIHTTPRequest是一个修改版本,它的修改方式是重写一个方法,但是没有删除旧方法(具有相同的签名),在我为项目中使用的3RD方库创建静态库之前不会出现问题(即调用新方法),该方法声明将方法声明与不适合可修改的可达性框架的旧方法相关联 .

  • 0

    可达性*可达性= [Reachability reachabilityForInternetConnection]; BOOL remoteHostStatus = [reachability currentReachabilityStatus];

    if (remoteHostStatus == ReachableViaWiFi || remoteHostStatus == ReachableViaWWAN)
    
    {
        [MBProgressHUD showHUDAddedTo:self.view animated:YES];
        NSMutableDictionary *dict                       =   [[NSMutableDictionary alloc] initWithObjectsAndKeys:textFieldUserName.text,@"email",textFieldpass.text,@"password", nil];
        objApp.responseData      = [[NSMutableData data]init];
        objApp.request           = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@login",mainUrl]]];
        NSData * requestBodyData                        =   [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
        objApp.request.HTTPMethod=     @"POST";
        [objApp.request setHTTPBody:requestBodyData];
    
    
        [objApp.request setTimeoutInterval:8.0f];
        // Create url connection and fire request
        objApp.connection = [[NSURLConnection alloc] initWithRequest:objApp.request delegate:self];
    }
    else
    {
        [objApp alertViewFromApp:@"check internet connection of device"];
    }
    
  • 2

    Step 1:-

    import SystemConfiguration

    Step 2:-

    //MARK:- Internet available or Not
    public  static  func isConnectedToNetwork() -> Bool {
    
        var zeroAddress = sockaddr_in()
        zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
        zeroAddress.sin_family = sa_family_t(AF_INET)
        let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
            SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
        }
        var flags = SCNetworkReachabilityFlags()
        if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
            return false
        }
        let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
        let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
    
        return (isReachable && !needsConnection)
    }
    

    Step 3:-

    if Global.isConnectedToNetwork() {
    

    }

相关问题