Xamarin.Essentials: ConnettivitàXamarin.Essentials: Connectivity

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.The Connectivity class lets you monitor for changes in the device's network conditions, check the current network access, and how it is currently connected.

IntroduzioneGet started

Per iniziare a usare questa API, vedere la introduttiva per Xamarin.Essentials per assicurarsi che la libreria sia installata e configurata correttamente nei progetti.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Per accedere alla funzionalità Connectivity, è necessaria la configurazione seguente specifica della piattaforma.To access the Connectivity functionality the following platform specific setup is required.

L'autorizzazione AccessNetworkState è obbligatoria e deve essere configurata nel progetto Android.The AccessNetworkState permission is required and must be configured in the Android project. È possibile aggiungerla nei modi seguenti:This can be added in the following ways:

Aprire il file AssemblyInfo.cs nella cartella Proprietà e aggiungere:Open the AssemblyInfo.cs file under the Properties folder and add:

[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]

OPPURE aggiornare il manifesto di Android:OR Update Android Manifest:

Aprire il file AndroidManifest.xml nella cartella Proprietà e aggiungere quanto segue all'interno del nodo manifest.Open the AndroidManifest.xml file under the Properties folder and add the following inside of the manifest node.

<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.Or right click on the Android project and open the project's properties. In Manifesto Android trovare l'area Autorizzazioni necessarie e selezionare l'autorizzazione Access Network State (Accesso stato di rete).Under Android Manifest find the Required permissions: area and check the Access Network State permission. Il file AndroidManifest.xml verrà aggiornato automaticamente.This will automatically update the AndroidManifest.xml file.

Uso di ConnectivityUsing Connectivity

Aggiungere un riferimento a Xamarin.Essentials nella classe:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Controllare l'accesso alla rete corrente:Check current network access:

var current = Connectivity.NetworkAccess;

if (current == NetworkAccess.Internet)
{
    // Connection to internet is available
}

Le categorie disponibili per NetworkAccess sono le seguenti:Network access falls into the following categories:

  • Internet - Accesso locale e a Internet.Internet – Local and internet access.
  • ConstrainedInternet - Accesso a Internet limitato.ConstrainedInternet – Limited internet access. 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.Indicates captive portal connectivity, where local access to a web portal is provided, but access to the Internet requires that specific credentials are provided via a portal.
  • Local - Solo accesso alla rete locale.Local – Local network access only.
  • None - Connettività non disponibile.None – No connectivity is available.
  • Unknown - Impossibile determinare la connettività Internet.Unknown – Unable to determine internet connectivity.

È possibile controllare il tipo di profilo di connessione in uso nel dispositivo:You can check what type of connection profile the device is actively using:

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:Whenever the connection profile or network access changes you can receive an event when triggered:

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;
    }
}

LimitazioniLimitations

È importante notare che è possibile che NetworkAccess indichi Internet, ma che l'accesso completo al Web non sia disponibile.It is important to note that it is possible that Internet is reported by NetworkAccess but full access to the web is not available. In considerazione di come funziona la connettività in ogni piattaforma, è possibile garantire solo che sia disponibile una connessione.Due to how connectivity works on each platform it can only guarantee that a connection is available. Ad esempio, il dispositivo potrebbe essere collegato a una rete Wi-Fi, ma il router potrebbe essere disconnesso da Internet.For instance the device may be connected to a Wi-Fi network, but the router is disconnected from the internet. In questa situazione, potrebbe essere indicata la disponibilità di Internet ma non è disponibile una connessione attiva.In this instance Internet may be reported, but an active connection is not available.

APIAPI

Altri video di Xamarin sono disponibili su Channel 9 e YouTube.Find more Xamarin videos on Channel 9 and YouTube.