2010-02-07 2 views
1

Использование iphone sdk 3.1.2Доступность образца для iPhone не всегда работает

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

hostReach = [[Reachability reachabilityWithHostName: @"www.google.com"] retain]; 
[hostReach startNotifer]; 

тогда, когда я получаю уведомление я использовать эти функции, дай мне знать состояние сети

NetworkStatus netStatus = [hostReach currentReachabilityStatus]; 
BOOL connectionRequired= [hostReach connectionRequired]; 

Я обнаружил, что если я отключите кабель питания от моего Netgear маршрутизатора моего приложение правильно знает его потеряла связь с Интернетом. Однако, когда я подключить питание обратно в моем приложении, хотя он получает уведомления от обратного вызова достижимости NetStatus возвращенного

[hostReach currentReachabilityStatus] 

никогда равно ReachableByWifi что и я хочу знать, если Интернет доступен через WiFI).

Даже если у меня есть таймер каждые 30secs позвонить

[hostReach currentReachabilityStatus] 

это еще не возвращает ReachablebyWifi даже тогда, когда явно маршрутизатор все началось и Интернет, безусловно, имеется. Это была худшая ситуация, которая, как я думал, будет работать.

На другой ноте, если я только вытаскивать подключение телефонной линии и оставить маршрутизатор включенным (т.е. сигнал Wi-Fi еще present0 мое приложение не получает уведомление о подключение к Интернету вниз.

Как преодолеть эти проблемы ?

ответ

0

я испытал то же самое. на мой взгляд Reachability класс странному поведению и следует рассматривать Пример кода. Кто-то должен переписать это все дело на основе обратной связи от сообщества.

+0

Любые обходные пути или другие способы сделать это, кроме достижимости – tech74

+0

Хорошо, вы можете прочитать исходный код возможности и понять, как он использует API нижнего уровня. –

1

несколько месяцев назад я нашел кто более эффективная реализация. Вы можете найти его на http://blog.ddg.com/?p=24. Моя компания использует ее в наших приложениях, и она намного более надежна, чем образец Apple.

Смежные вопросы