статус доступности ForLocalWiFi — ReachableViaWWAN при подключении к WIFI?

Мне нужно определить, подключено ли устройство к WIFI:

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

но статус WWAN, когда я подключаюсь к WIFI на iPad, и SIM-карта не вставлена, я собираюсь проверить статус С SIM-картой.

Кто-нибудь знает причину?

редактировать:

Только что попробовал с SIM-картой, она по-прежнему распознается как ReachableViaWWAN, но фактическое соединение осуществляется через 3G (сервер разрешает только 3G-соединение, WIFI не работает), поэтому я предполагаю, что доступность может меняться со временем?


person hzxu    schedule 13.07.2012    source источник


Ответы (3)


Наконец я понял это, класс Reachability, который я использовал, является частью ASIHTTPRequest, который является модифицированной версией, и он изменен таким образом, что метод переписывается, но старый метод (с той же сигнатурой) не удаляется, это не создает проблем (т.е. вызывается новый метод), пока я не создал статическую библиотеку для сторонних библиотек, используемых в проекте, которая связывает объявление метода со старым методом, который не вписывается в измененные рамки Reachability.

person hzxu    schedule 16.07.2012

Reachability *reachability = [ДоступностьreachabilityForInternetConnection]; BOOL remoteHostStatus = [достижимость 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"];
}
person Abhimanyu Rathore    schedule 16.09.2014

Шаг 1:-

импорт конфигурации системы

Шаг 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)
}

Шаг 3:-

 if Global.isConnectedToNetwork() {

}

person Abhimanyu Rathore    schedule 02.11.2016