Обнаружение возможности сетевого подключения
Мобильные устройства используют Wi-Fi и технологии сотовой связи для подключения к Интернету. Эта зависимость означает, что ваши пользователи могут потерять подключение к Интернету при использовании приложения. Если вы не добавите код, чтобы избежать этого, ваше приложение может перестать отвечать на запросы, что негативно скажется на работе пользователей.
В этом уроке вы защитите приложение, обнаруживая потерю подключения к Интернету. Эти сведения будут очень важны, когда мы начнем использовать веб-службы REST.
Зачем нужно обнаруживать сетевое подключение в мобильных приложениях?
Обнаружение подключения к Интернету для мобильных приложений имеет важное значение, так как мобильные устройства могут часто терять подключение. Это может быть вызвано низким уровнем сигнала в зоне покрытия оператора или нахождением в среде с ограниченными или отсутствующим приемом сигнала, такими как туннель, глубокая долина или высокая гора. Существуют также различные типы сетевых подключений. Если вы находитесь в среде, в которой доступно подключение по Wi-Fi, пропускная способность обычно выше, чем при использовании сотовой связи. Возможно, вы по-прежнему сможете подключиться к Интернету, но некоторые операции, такие как потоковое видео содержимое, могут быть медленнее (и дорого) по сравнению с подключением Wi-Fi.
Так как мобильные устройства сталкиваются с этими проблемами, нужно написать код для защиты от них. В противном случае приложение попытается выполнить операции, использующие Интернет, и может перестать отвечать на запросы.
Кроме того, нужно обеспечить надлежащее взаимодействие с пользователем, когда приложению не удается подключиться к Интернету. Если приложение перестает работать без подключения к Интернету, пользователи могут растеряться. Лучше всего предоставить пользователям соответствующие сведения. Сообщите им об отсутствии подключения к Интернету и невозможности полноценной работы приложения. Пример приведен на следующем рисунке:
В этом примере разработчик приложения сообщает пользователю, что у него нет подключения к Интернету и он должен пытаться подключиться к сети 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
событие позволяет создавать приложения, которые могут обнаруживать изменение состояния сети и легко настраивать функциональность, доступную в соответствии с различными средами.