Connectivity
Questo articolo descrive come usare l'interfaccia dell'interfaccia dell'app multipiattaforma .NET (.NET MAUI) IConnectivity per esaminare l'accessibilità di rete del dispositivo. La connessione di rete può avere accesso a Internet. I dispositivi contengono anche diversi tipi di connessioni di rete, ad esempio Bluetooth, cellulare o Wi-Fi. L'interfaccia IConnectivity
ha un evento per monitorare le modifiche apportate allo stato della connessione dei dispositivi.
L'implementazione predefinita dell'interfaccia IConnectivity
è disponibile tramite la Connectivity.Current proprietà . Sia l'interfaccia che Connectivity
la IConnectivity
classe sono contenute nello spazio dei Microsoft.Maui.Networking
nomi .
Operazioni preliminari
Per accedere alla Connectivity funzionalità, è necessaria la configurazione specifica della piattaforma seguente.
L'autorizzazione AccessNetworkState
è obbligatoria e deve essere configurata nel progetto Android. È possibile aggiungerla nei modi seguenti:
Aggiungere l'autorizzazione basata su assembly:
Aprire il file Platforms/Android/MainApplication.cs e aggiungere gli attributi assembly seguenti dopo
using
le direttive:[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
o
Aggiornare il manifesto Android:
Aprire il file Platforms/Android/AndroidManifest.xml e aggiungere quanto segue nel
manifest
nodo:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
o
Aggiornare il manifesto Android nell'editor del manifesto:
In Visual Studio fare doppio clic sul file Platforms/Android/AndroidManifest.xml per aprire l'editor del manifesto Android. Quindi, in Autorizzazioni necessarie controllare l'autorizzazione ACCESS_NETWORK_STATE . Il file AndroidManifest.xml verrà aggiornato automaticamente.
uso di Connectivity
È possibile determinare l'ambito della rete corrente controllando la NetworkAccess proprietà .
NetworkAccess accessType = Connectivity.Current.NetworkAccess;
if (accessType == NetworkAccess.Internet)
{
// Connection to internet is available
}
Le categorie disponibili per NetworkAccess sono le seguenti:
- Internet — Accesso locale e a Internet.
- ConstrainedInternet — Accesso a Internet limitato. Questo valore significa che è disponibile un portale captive, in cui viene fornito l'accesso locale a un portale Web. Dopo aver usato il portale per fornire le credenziali di autenticazione, viene concesso l'accesso a Internet.
- Local — Solo accesso alla rete locale.
- None — Non connectivity è disponibile.
- Unknown — Impossibile determinare Internet connectivity.
È possibile controllare il tipo di profilo di connessione in uso nel dispositivo:
IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Ogni volta che cambia il profilo di connessione o l'accesso alla rete, viene generato l'evento 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();
}
}
Limiti
È importante sapere che è possibile che Internet venga segnalato da NetworkAccess ma l'accesso completo al Web non è disponibile. A causa di come connectivity funziona su ogni piattaforma, può garantire solo che sia disponibile una connessione. Ad esempio, il dispositivo può essere connesso a una rete Wi-Fi, ma il router è disconnesso da Internet. In questa istanza Internet
può essere segnalato, ma non è disponibile una connessione attiva.