Определение, когда соединение EDGE возвращается после выпадения на iPhone
-
05-07-2019 - |
Вопрос
Я включил образец Apple Reachability в свой собственный проект, поэтому я знаю, есть ли у меня сетевое соединение - если у меня нет сетевого соединения, я не беспокоюсь об отправке и запросах. Я решил пойти с реализацией уведомлений о статусе, потому что казалось, что проще обновлять достижимость в фоновом режиме и получать текущие результаты сразу, а не запускать синхронный запрос всякий раз, когда я хочу установить сетевое соединение.
Моя проблема в том, что я начинаю получать ложные негативы, когда в сети EDGE - у телефона есть подключение, но приложение считает, что это не так. Насколько я понимаю, вы не получаете уведомление, когда соединение EDGE, поэтому я предполагаю, что я потерял и восстановил соединение в какой-то момент. Перезапуска приложения обычно достаточно, чтобы увидеть сетевое соединение.
Это не оптимальное решение, поэтому мне было интересно, сталкивался ли кто-нибудь еще с этой проблемой и не задумывался над ее решением.
(я не знаю, относится ли это и к 3G; у меня iPhone первого поколения).
Решение
Уведомления о доступности не показались мне надежными для обнаружения Wi-Fi. Поэтому я просто использую опрос. Проверка каждые 5 секунд, кажется, не приносит вреда.
- (void) checkReachability {
BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork);
// Do something...
[self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0];
}
Другие советы
В сети есть хороший пример достижимости. это прекрасно работает http://servin.com/iphone/iPhone-Network-Status.html р>
Но вы видите, когда я пытаюсь использовать его по-своему, это просто бомбы.
Пытался реализовать это с помощью:
NSString *sCellNetwork;
NSString *sNetworkReachable;
if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)
{do it}
else {
Network fail alert;
}