Обнаружение возможности сетевого подключения

Завершено

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

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

Зачем нужно обнаруживать сетевое подключение в мобильных приложениях?

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

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

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

Screenshot of an app showing a warning about limited network connectivity.

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

Обнаружение возможности сетевого подключения

Чтобы проверить сетевое подключение в приложении .NET MAUI, используйте класс Connectivity. Этот класс предоставляет вызываемое свойство NetworkAccess и событие с именем ConnectivityChanged. Эти элементы можно использовать для обнаружения изменений в сети.

Доступ к свойству NetworkAccess осуществляется через другое свойство с именем Current. Это механизм, который Connectivity принимает доступ к реализации конкретной платформы.

Свойство NetworkAccess возвращает значение из перечисления NetworkAccess. У перечисления есть пять значений: ConstrainedInternet, Internet, Local, None и Unknown. Если свойство NetworkAccess возвращает значение NetworkAccess.None, вы знаете, что у вас нет подключения к Интернету и не следует запускать сетевой код. Этот механизм можно переносить на разные платформы. Пример кода приведен ниже.

if (Connectivity.Current.NetworkAccess == NetworkAccess.None)
{
    ...
}

Это ConnectivityChanged событие также позволяет определить, подключено ли устройство к Интернету. Событие ConnectivityChanged активируется автоматически при изменении состояния сети. Например, если вы начинаете работу с активным сетевым подключением, а позже теряете его, вызывается событие ConnectivityChanged, чтобы сообщить вам об изменении. Одним из параметров, передаваемых обработчику событий ConnectivityChanged, является объект ConnectivityChangedEventArgs. Этот объект содержит свойство с именем IsConnected. Вы можете использовать свойство IsConnected, чтобы определить наличие подключения. Приведем пример:

Connectivity.Current.ConnectivityChanged += Connectivity_ConnectivityChanged;
...
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs  e)
{
    bool stillConnected = e.IsConnected;
}

Это ConnectivityChanged событие позволяет создавать приложения, которые могут обнаруживать изменение состояния сети и легко настраивать функциональность, доступную в соответствии с различными средами.

Проверка знаний

1.

Что из перечисленного является основной причиной проверки наличия подключения к Интернету перед выполнением сетевого кода?

2.

Предположим, вы пишете приложение, которое пользователь может запускать во время поездки на транспортном средстве. Если транспортное средство въезжает в туннель, устройство может потерять подключение к Интернету. Какой член класса Connectivity следует использовать для обнаружения изменений в сетевом подключении?