Проверка интернет-соединения с помощью Reachability 2.2

Мы пытаемся отобразить представление предупреждения, когда нет соединения, и мы используем классы доступности 2.2 от Apple. Проблема, с которой мы сталкиваемся, заключается в том, что при запуске программы мы всегда получаем предупреждение о том, что нет подключения к Интернету, но мы подключены к Интернету. Есть ли правильный способ проверить подключение к Интернету с этими классами?


person Chris    schedule 28.07.2010    source источник
comment
Вы смотрели пример кода Reachability?   -  person jtbandes    schedule 28.07.2010


Ответы (2)


Я помню, как читал, что код Reachability в примерах кода Apple не очень хорош для проверки сети. Рекомендуемый подход заключался в том, чтобы проверить, видит ли устройство ваш веб-сайт (или веб-страницу), и если не выдает ошибку.

Я искал, где я это читал, но не смог найти оригинал. Вот другая ссылка, которая использует этот подход:

http://www.iphonedevx.com/?p=657

person nevan king    schedule 28.07.2010
comment
В этом примере он использует класс достижимости. - person Chris; 28.07.2010
comment
Проблемы были в более старых версиях класса Reachability от Apple — последняя версия (v. 2.n.n) была значительно переписана. - person NickFitz; 29.09.2010

достижимости нужно некоторое время, чтобы выполнить свою задачу. так что будьте терпеливы. использование уведомлений для получения результатов.

Вот что я делаю:

BOOL hasInet;
Reachability *connectionMonitor = [Reachability reachabilityForInternetConnection];
[[NSNotificationCenter defaultCenter]
    addObserver: self
    selector: @selector(inetAvailabilityChanged:)
    name:  kReachabilityChangedNotification
    object: connectionMonitor];

hasInet = [connectionMonitor currentReachabilityStatus] != NotReachable;

а потом

-(void)inetAvailabilityChanged:(NSNotification *)notice {
    Reachability *r = (Reachability *)[notice object];
    hasInet = [r currentReachabilityStatus] != NotReachable;
}

который хорошо работает для меня.

person xhan    schedule 26.09.2010