Я искал SO для ответа на этот вопрос, и на самом деле он не был адресован, по крайней мере, не до такой степени, что я могу заставить его работать.
Я изначально только проверял доступность Интернета, используя:
self.wwanReach = [Reachability reachabilityWithHostName:@"www.apple.com"];
[wwanReach startNotifer];
Теперь мне нужно поддерживать локальное WiFi-соединение (при отсутствии доступа к Интернету в целом), и когда я нашел +reachabilityForLocalWiFi
, я также заметил, что есть +reachabilityForInternetConnection
. Я решил, что могу использовать их вместо жесткого кодирования "www.apple.com"
там, но, увы, когда я использую:
self.wwanReach = [Reachability reachabilityForInternetConnection];
[wwanReach startNotifer];
self.wifiReach = [Reachability reachabilityForLocalWiFi];
[wifiReach startNotifer];
обратный вызов достижимости, который я настроил "никогда", вызывается, для значений "никогда" до 10, 12, 15 минут или около того (это было до тех пор, пока мое терпение продолжалось. (Терпение пользователя будет много меньше, я уверен.) Переключение обратно на + достижимостьWithHostName: работает в течение нескольких секунд. Я также пробовал каждую "пару" индивидуально, если возникла проблема с двумя одновременно активируемыми нотификаторами, но это не имело значения.
Итак: Каким образом можно определить доступность к Интернету /WWAN или локальной сети Wifi (либо одному, либо и тому и другому)?
[Этот конкретный вариант использования - это iPhone или iPad, подключаемый к сети Mac mini от компьютера к компьютеру; Я уверен, что применяются другие ситуации.]