Как узнать, есть ли Wi-Fi с подключением к Интернету или без него

Я хотел бы узнать, есть ли у Wi-Fi подключение к Интернету или нет. Иногда наши устройства подключены к Wi-Fi, но Wi-Fi не имеет внутреннего подключения.

NWPathMonitor или сторонняя организация Connectivity. Я пробовал это не доказательство дурака.

Я знаю, что могу написать метод проверки связи с сервером, но это очень неэффективное и дорогостоящее дело.

Любые идеи, пожалуйста

1 ответ

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

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

Подключение Wi-Fi может переходить из режима без Интернета в Интернет, когда пользователь заполняет форму входа в Hotspot. Соединение Wi-Fi может переходить из Интернета в режим без Интернета, если исходящее соединение с Интернетом каким-либо образом не работает. Соединение Wi-Fi может быть подключено к Интернету, но не может связываться с конкретным хостом, который нужен вашему приложению из-за сбоя маршрутизации или какой-либо другой проблемы.

По всем этим причинам Apple не рекомендует проводить «предполетные» проверки. Даже если проверка прошла успешно, сетевая операция все равно может завершиться ошибкой из-за изменения статуса сети, которое произошло через микросекунду.

В любом случае вам нужно обрабатывать ошибки. Просто попробуйте операцию и посмотрите, что произойдет. Если нет сетевого подключения, он очень быстро выйдет из строя.

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

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

Другие вопросы по тегам