Определение, когда соединение EDGE возвращается после выпадения на iPhone - PullRequest
10 голосов
/ 08 октября 2008

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

Моя проблема в том, что я начинаю получать ложные негативы, когда в сети EDGE - у телефона есть подключение, но приложение думает, что это не так. Насколько я понимаю, вы не получаете уведомление, когда соединение EDGE, поэтому я предполагаю, что я потерял и восстановил соединение в какой-то момент. Перезапуска приложения обычно достаточно, чтобы увидеть сетевое соединение.

Это не оптимальное решение, поэтому мне было интересно, сталкивался ли кто-нибудь еще с этой проблемой и не задумывался над решением.

(я не знаю, относится ли это и к 3G; у меня iPhone первого поколения).

Ответы [ 2 ]

14 голосов
/ 08 октября 2008

Уведомления о доступности не показались мне надежными для обнаружения Wi-Fi. Поэтому я просто использую опрос. Проверка каждые 5 секунд, кажется, не приносит вреда.

- (void) checkReachability {
    BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork);

    // Do something...

    [self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0];
}
1 голос
/ 12 августа 2011

В сети есть хороший пример достижимости. это прекрасно работает http://servin.com/iphone/iPhone-Network-Status.html

Но вы видите, когда я пытаюсь использовать его по-своему, это просто бомбы.

Пытался реализовать это используя:

NSString *sCellNetwork;     
 NSString *sNetworkReachable;  

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)

{do it} 

 else {
   Network fail alert; 
}
...