Поделиться через


Xamarin.Essentials:Связь

Класс 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, маршрутизатор которой не имеет подключения к Интернету. В этом случае будет зарегистрировано подключение к Интернету, но не будет возможности его активно использовать.

API

Другие видео о Xamarin см. на Channel 9 и YouTube.