Как узнать, есть ли Wi-Fi с подключением к Интернету или без него
Я хотел бы узнать, есть ли у Wi-Fi подключение к Интернету или нет. Иногда наши устройства подключены к Wi-Fi, но Wi-Fi не имеет внутреннего подключения.
NWPathMonitor или сторонняя организация Connectivity. Я пробовал это не доказательство дурака.
Я знаю, что могу написать метод проверки связи с сервером, но это очень неэффективное и дорогостоящее дело.
Любые идеи, пожалуйста
1 ответ
Единственный способ узнать наверняка, есть ли в сети подключение к Интернету, - это попытаться установить соединение с Интернетом. На устройстве нет ничего, что можно было бы запросить, чтобы получить ответ.
Даже если бы это было, пришлось бы прибегнуть к опросу / пингу, поскольку подключение может измениться в любой момент.
Подключение Wi-Fi может переходить из режима без Интернета в Интернет, когда пользователь заполняет форму входа в Hotspot. Соединение Wi-Fi может переходить из Интернета в режим без Интернета, если исходящее соединение с Интернетом каким-либо образом не работает. Соединение Wi-Fi может быть подключено к Интернету, но не может связываться с конкретным хостом, который нужен вашему приложению из-за сбоя маршрутизации или какой-либо другой проблемы.
По всем этим причинам Apple не рекомендует проводить «предполетные» проверки. Даже если проверка прошла успешно, сетевая операция все равно может завершиться ошибкой из-за изменения статуса сети, которое произошло через микросекунду.
В любом случае вам нужно обрабатывать ошибки. Просто попробуйте операцию и посмотрите, что произойдет. Если нет сетевого подключения, он очень быстро выйдет из строя.
Если вы хотите предоставить пользователю больше отзывов, вы можете начать активную проверку подключения к Интернету с экспоненциальным откатом в ответ на ошибку подключения.
Таким образом, ваше приложение не будет постоянно проверять связь.