Condividi tramite


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

Altri video di Xamarin sono disponibili su Channel 9 e YouTube.