Connectivity
Tento článek popisuje, jak můžete pomocí rozhraní .NET Multi-Platform App UI (.NET MAUI) IConnectivity zkontrolovat přístupnost sítě zařízení. Síťové připojení může mít přístup k internetu. Zařízení také obsahují různé druhy síťových připojení, jako je Bluetooth, mobilní síť nebo WiFi. Rozhraní IConnectivity
má událost, která monitoruje změny ve stavu připojení zařízení.
Výchozí implementace IConnectivity
rozhraní je k dispozici prostřednictvím Connectivity.Current vlastnosti. Rozhraní IConnectivity
i Connectivity
třída jsou obsaženy v Microsoft.Maui.Networking
oboru názvů.
Začínáme
Pro přístup k funkcím Connectivity se vyžaduje následující nastavení specifické pro platformu.
Oprávnění AccessNetworkState
je povinné a musí být nakonfigurováno v projektu Android. Můžete ho přidat následujícími způsoby:
Přidejte oprávnění založené na sestavení:
Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy
using
přidejte následující atributy sestavení:[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
- nebo -
Aktualizace manifestu Androidu:
Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následující
manifest
:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- nebo -
Aktualizace manifestu Androidu v editoru manifestu:
V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte oprávnění ACCESS_NETWORK_STATE. Tím se automaticky aktualizuje soubor AndroidManifest.xml .
Používání akce Connectivity
Rozsah aktuální sítě můžete určit kontrolou NetworkAccess vlastnosti.
NetworkAccess accessType = Connectivity.Current.NetworkAccess;
if (accessType == NetworkAccess.Internet)
{
// Connection to internet is available
}
Přístup k síti spadá do následujících kategorií:
- Internet — Místní a internetový přístup.
- ConstrainedInternet — Omezený přístup k internetu. Tato hodnota znamená, že je k dispozici místní přístup k webovému portálu. Jakmile se portál použije k zadání přihlašovacích údajů pro ověřování, udělí se přístup k internetu.
- Local — Pouze přístup k místní síti.
- None — Není connectivity k dispozici.
- Unknown — Nelze určit internet connectivity.
Můžete zkontrolovat, jaký typ profilu připojení zařízení aktivně používá:
IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Pokaždé, když se profil připojení nebo síťový přístup změní, dojde k ConnectivityChanged vyvolání události:
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();
}
}
Omezení
Je důležité vědět, že je možné, že Internet je nahlášený NetworkAccess , ale úplný přístup k webu není dostupný. Vzhledem k tomu, jak connectivity funguje na jednotlivých platformách, může zaručit, že je připojení k dispozici. Zařízení může být například připojené k síti Wi-Fi, ale směrovač je odpojený od internetu. V tomto případě Internet
může být hlášeno, ale aktivní připojení není k dispozici.