iOS - сбой проверки подключения с классом Reachability. (reachabilityWithHostName :)

Я написал средство проверки соединения, используя метод reachabilityWithHostName: класса Apple Reachability. Вот мой код.

-(BOOL)checkConnection{
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.example.com"];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if (remoteHostStatus != NotReachable) {
    return YES;
}
else {return NO;}
}

Итак, вот варианты использования:

  • если у меня есть подключение к Wi-Fi **: возвращает ДА, как и ожидалось.
  • Если у меня есть сотовая связь: как и ожидалось, возвращает ДА.
  • Если сотовая связь и Wi-Fi отключены: как и ожидалось, возвращает NO.
  • Если у меня есть Wi-Fi соединение; но кабель DSL отключен (поэтому хост не должен быть доступен, подключение к Интернету недоступно.): возвращает ДА, и это неожиданно.
  • Также, если сотовая связь включена, но в моем текущем положении у меня нет сигнала: возвращает ДА, и это неожиданно.

Как я могу решить эти неожиданные результаты? Спасибо.


person Arda Oğul Üçpınar    schedule 14.03.2014    source источник
comment
См. Это: stackoverflow.com/questions/22363713 /   -  person Martin Koles    schedule 14.03.2014


Ответы (1)


С помощью @Martin Koles я добавил на сервер html-файл. Внутри есть только случайное значение. Сейчас проверяю достижимость. Если сервер доступен, я пытаюсь получить значение из файла html. Тогда, если бы я мог получить значение, возвращающее ДА. Если бы я не смог (serverValue должен быть равен нулю) вернуть NO ..

-(BOOL)checkConnection{
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.izmirmobil.com"];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if (remoteHostStatus != NotReachable) {
    NSURL *url = [NSURL URLWithString:@"http://www.example.com/getAValue.html"];
    NSError *errr = nil;
    NSStringEncoding enc;
    NSString *serverValue = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&enc error:&errr];
    if(serverValue)return YES;
    else return NO;

}
else {return NO;}
}
person Arda Oğul Üçpınar    schedule 14.03.2014