iOS - проверка подключения с классом Reachability не выполнена. (ReachabilityWithHostName:)
Я написал средство проверки соединения с использованием класса Reachability от Apple "reachabilityWithHostName: метод". Вот мой код
-(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 отключен (поэтому хост не должен быть доступен, интернет-соединение недоступно): возвращает YES, и это неожиданно.
- Также, если сотовая связь включена, но в моей текущей позиции у меня нет сигнала: возвращает ДА, и это неожиданно.
Как я могу решить эти неожиданные результаты? Спасибо.
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;}
}