Connectivity
Den här artikeln beskriver hur du kan använda .NET Multi-platform App UI (.NET MAUI) IConnectivity-gränssnittet för att inspektera enhetens nätverkstillgänglighet. Nätverksanslutningen kan ha åtkomst till Internet. Enheter innehåller också olika typer av nätverksanslutningar, till exempel Bluetooth, mobilnät eller WiFi.
IConnectivity
-gränssnittet har en händelse för att övervaka ändringar i enhetens anslutningstillstånd.
Standardimplementeringen av IConnectivity
-gränssnittet är tillgänglig via egenskapen Connectivity.Current. Både IConnectivity
-gränssnittet och Connectivity
-klassen finns i namnområdet Microsoft.Maui.Networking
.
Sätta igång
För att få åtkomst till Connectivity funktioner krävs följande plattformsspecifika installation.
Behörigheten AccessNetworkState
krävs och måste konfigureras i Android-projektet. Detta kan läggas till på följande sätt:
Lägg till den sammansättningsbaserade behörigheten:
Öppna filen Platforms/Android/MainApplication.cs och lägg till följande sammansättningsattribut efter
using
direktiv:[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
-eller-
Uppdatera Android-manifestet:
Öppna filen Platforms/Android/AndroidManifest.xml och lägg till följande i noden
manifest
:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-eller-
Uppdatera Android-manifestet i manifestredigeraren:
I Visual Studio dubbelklickar du på filen Platforms/Android/AndroidManifest.xml för att öppna Android-manifestredigeraren. Sedan, under Behörigheter som krävs, kontrollera behörigheten ACCESS_NETWORK_STATE. Detta uppdaterar automatiskt AndroidManifest.xml-filen.
Använda Connectivity
Du kan fastställa omfånget för det aktuella nätverket genom att kontrollera egenskapen NetworkAccess.
NetworkAccess accessType = Connectivity.Current.NetworkAccess;
if (accessType == NetworkAccess.Internet)
{
// Connection to internet is available
}
Nätverksåtkomst ingår i följande kategorier:
- Internet – Lokal åtkomst och internetåtkomst.
- ConstrainedInternet – Begränsad internetåtkomst. Det här värdet innebär att det finns en företagsintern portal där lokal åtkomst till en webbportal tillhandahålls. När portalen används för att ange autentiseringsuppgifter beviljas Internetåtkomst.
- Local – Endast åtkomst till lokalt nätverk.
- None – Ingen anslutning är tillgänglig.
- Unknown – Det går inte att fastställa internetanslutningen.
Du kan kontrollera vilken typ av anslutningsprofil enheten aktivt använder:
IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
När anslutningsprofilen eller nätverksåtkomsten ändras aktiveras den ConnectivityChanged händelsen:
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();
}
}
Begränsningar
Det är viktigt att veta att det är möjligt att Internet rapporteras av NetworkAccess men fullständig åtkomst till webben är inte tillgänglig. På grund av hur anslutningen fungerar på varje plattform kan den bara garantera att en anslutning är tillgänglig. Enheten kan till exempel vara ansluten till ett Wi-Fi nätverk, men routern är frånkopplad från Internet. I det här fallet kan Internet
rapporteras, men en aktiv anslutning är inte tillgänglig.