Connectivity

Browse sample. Обзор примера

В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI) IConnectivity для проверки доступности сети устройства. Сетевое подключение может иметь доступ к Интернету. Устройства также содержат различные сетевые подключения, такие как Bluetooth, сотовой связи или Wi-Fi. Интерфейс IConnectivity имеет событие для отслеживания изменений в состоянии подключения устройств.

Реализация интерфейса по умолчанию IConnectivity доступна через Connectivity.Current свойство. Интерфейс IConnectivity и Connectivity класс содержатся в Microsoft.Maui.Networking пространстве имен.

Начать

Для доступа к Connectivity функциям требуется следующая настройка для конкретной платформы.

Требуется разрешение AccessNetworkState, которое следует настроить в проекте Android. Для этого можно применить любой из следующих методов:

  • Добавьте разрешение на основе сборки:

    Откройте файл Platform/Android/MainApplication.cs и добавьте следующие атрибуты сборки после using директив:

    [assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
    

    - или -

  • Обновите манифест Android:

    Откройте файл Platform/Android/AndroidManifest.xml и добавьте в узел следующееmanifest:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    - или -

  • Обновите манифест Android в редакторе манифеста:

    В Visual Studio дважды щелкните файл Platform/Android/AndroidManifest.xml , чтобы открыть редактор манифеста Android. Затем в разделе "Необходимые разрешения" проверка разрешения ACCESS_NETWORK_STATE. Это действие автоматически обновляет файл AndroidManifest.xml.

С использованием Connectivity

Вы можете определить область текущей сети, проверка свойствуNetworkAccess.

NetworkAccess accessType = Connectivity.Current.NetworkAccess;

if (accessType == NetworkAccess.Internet)
{
    // Connection to internet is available
}

Сетевой доступ разделяется на следующие категории:

  • Internet — локальный и интернет-доступ.
  • ConstrainedInternet — ограниченный доступ к Интернету. Это значение означает, что есть заверяющий портал, где предоставляется локальный доступ к веб-порталу. После использования портала для предоставления учетных данных проверки подлинности предоставляется доступ к Интернету.
  • Local — только локальный сетевой доступ.
  • None — нет возможности подключения.
  • Unknown — Не удается определить подключение к Интернету.

Вы можете проверить, какой тип профиля подключения устройство активно использует:

IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;

if (profiles.Contains(ConnectionProfile.WiFi))
{
    // Active Wi-Fi connection.
}

При изменении ConnectivityChanged профиля подключения или сетевого доступа событие вызывается:

public class ConnectivityTest
{
    public ConnectivityTest() =>
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;

    ~ConnectivityTest() =>
        Connectivity.ConnectivityChanged -= Connectivity_ConnectivityChanged;

    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        if (e.NetworkAccess == NetworkAccess.ConstrainedInternet)
            Console.WriteLine("Internet access is available but is limited.");

        else if (e.NetworkAccess != NetworkAccess.Internet)
            Console.WriteLine("Internet access has been lost.");

        // Log each active connection
        Console.Write("Connections active: ");

        foreach (var item in e.ConnectionProfiles)
        {
            switch (item)
            {
                case ConnectionProfile.Bluetooth:
                    Console.Write("Bluetooth");
                    break;
                case ConnectionProfile.Cellular:
                    Console.Write("Cell");
                    break;
                case ConnectionProfile.Ethernet:
                    Console.Write("Ethernet");
                    break;
                case ConnectionProfile.WiFi:
                    Console.Write("WiFi");
                    break;
                default:
                    break;
            }
        }

        Console.WriteLine();
    }
}

Ограничения

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