Connectivity
В этой статье описывается, как использовать интерфейс многоплатформенного приложения .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
может быть сообщено, но активное подключение недоступно.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по