Xamarin.Essentials:Connettività
La classe Connectivity consente di monitorare le variazioni nelle condizioni di rete del dispositivo, controllare l'accesso alla rete corrente e il modo in cui è attualmente connesso.
Operazioni preliminari
Per iniziare a usare questa API, leggere la guida introduttiva per Xamarin.Essentials assicurarsi che la libreria sia installata e configurata correttamente nei progetti.
Per accedere alla funzionalità Connectivity, è necessaria la configurazione seguente specifica della piattaforma.
L'autorizzazione AccessNetworkState
è obbligatoria e deve essere configurata nel progetto Android. È possibile aggiungerla nei modi seguenti:
Aprire il file AssemblyInfo.cs nella cartella Proprietà e aggiungere:
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
OPPURE aggiornare il manifesto di Android:
Aprire il file AndroidManifest.xml nella cartella Proprietà e aggiungere quanto segue all'interno del nodo manifest.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Oppure fare clic con il pulsante destro del mouse sul progetto Android e aprire le proprietà del progetto. In Manifesto Android trovare l'area Autorizzazioni necessarie e selezionare l'autorizzazione Access Network State (Accesso stato di rete). Il file AndroidManifest.xml verrà aggiornato automaticamente.
Uso di Connectivity
Aggiungere un riferimento a Xamarin.Essentials nella classe :
using Xamarin.Essentials;
Controllare l'accesso alla rete corrente:
var current = Connectivity.NetworkAccess;
if (current == 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. Indica connettività captive portal, in cui è disponibile l'accesso locale a un portale Web, ma per l'accesso a Internet sono richieste credenziali specifiche specificate tramite un portale.
- Local - Solo accesso alla rete locale.
- None - Connettività non disponibile.
- Unknown - Impossibile determinare la connettività Internet.
È possibile controllare il tipo di profilo di connessione in uso nel dispositivo:
var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Per ogni variazione del profilo di connessione o dell'accesso alla rete è possibile ricevere un evento quando attivato:
public class ConnectivityTest
{
public ConnectivityTest()
{
// Register for connectivity changes, be sure to unsubscribe when finished
Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
}
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
var access = e.NetworkAccess;
var profiles = e.ConnectionProfiles;
}
}
Limiti
È importante notare che è possibile che NetworkAccess
indichi Internet
, ma che l'accesso completo al Web non sia disponibile. In considerazione di come funziona la connettività in ogni piattaforma, è possibile garantire solo che sia disponibile una connessione. Ad esempio, il dispositivo potrebbe essere collegato a una rete Wi-Fi, ma il router potrebbe essere disconnesso da Internet. In questa situazione, potrebbe essere indicata la disponibilità di Internet ma non è disponibile una connessione attiva.
API
Video correlato
Altri video di Xamarin sono disponibili su Channel 9 e YouTube.