2010-07-28 4 views
0

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

+1

Вы посмотрели пример кода возвращаемости? – jtbandes

ответ

0

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

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

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

+0

В этом примере он использует класс достижимости. – Chris

+1

Проблемы были в более старых версиях класса Reachability от Apple - последняя версия (v. 2.n.n) была значительно переписана. – NickFitz

0

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

Это то, что я делаю:

 
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; 
} 

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