Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Класс Connectivity позволяет отслеживать изменения в условиях подключения устройства к сети, проверять текущее состояние и используемый метод доступа.
Начало работы
Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.
Чтобы проверить функциональность класса Connectivity, нужно создать описанную ниже конфигурацию для конкретной платформы.
Требуется разрешение AccessNetworkState, которое следует настроить в проекте Android. Для этого можно применить любой из следующих методов:
Откройте файл AssemblyInfo.cs в папке Свойства и добавьте в него:
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
ИЛИ обновите манифест Android:
Откройте файл AndroidManifest.xml в папке Properties и добавьте приведенный ниже код в узел manifest.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
ИЛИ щелкните правой кнопкой мыши проект Android и откройте свойства проекта. В разделе Манифест Android найдите область Требуемые разрешения: и установите флажок для разрешения Access Network State (Доступ к состоянию сети). Это действие автоматически обновляет файл AndroidManifest.xml.
Использование подключения
Добавьте ссылку на Xamarin.Essentials в своем классе:
using Xamarin.Essentials;
Проверьте текущий сетевой доступ:
var current = Connectivity.NetworkAccess;
if (current == NetworkAccess.Internet)
{
// Connection to internet is available
}
Сетевой доступ разделяется на следующие категории:
- Internet — локальная сеть и доступ к Интернет;у
- ConstrainedInternet — ограниченный доступ к Интернету. Обозначает режим условного доступа через портал, при котором предоставляется локальный доступ к веб-порталу, а доступ к Интернету осуществляется через этот портал со специальными учетными данными;
- Local — только доступ к локальной сети;
- None — подключение недоступно;
- Unknown — не удается определить режим подключения.
Вы можете проверить, какой тип профиля подключения устройство активно использует:
var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Вы можете получать события с информацией о любых изменениях профиля подключения и (или) режима сетевого доступа:
public class ConnectivityTest
{
public ConnectivityTest()
{
// Register for connectivity changes, be sure to unsubscribe when finished
Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
}
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
var access = e.NetworkAccess;
var profiles = e.ConnectionProfiles;
}
}
Ограничения
Обратите внимание, что при состоянии Internet, полученном от NetworkAccess, доступ к Интернету может быть не полным. Так как на разных платформах используются различные методы подключения, можно гарантировать только факт наличия подключения. Например, устройство может быть подключено к сети Wi-Fi, маршрутизатор которой не имеет подключения к Интернету. В этом случае будет зарегистрировано подключение к Интернету, но не будет возможности его активно использовать.