Come recuperare le informazioni sulla connessione di rete (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

In questo argomento viene illustrato come recuperare i dettagli sulla connettività e le informazioni sull'uso per le connessioni di rete in un dispositivo mediante le classi dello spazio dei nomi Windows.Networking.Connectivity.

Prerequisiti

Gli esempi seguenti usano JavaScript e sono basati sull'esempio di informazioni di rete. Per informazioni generali sulla creazione di un'app di Windows Runtime in JavaScript, vedi Creare la prima app di Windows Runtime in JavaScript.

Cos'è un profilo di connessione?

Un ConnectionProfile rappresenta una singola connessione stabilita in un dispositivo. Le informazioni contenute in un ConnectionProfile possono essere usate per determinare il livello di connettività corrente, tenere traccia dell'uso dei dati oppure per identificare la scheda di rete usata per la connessione. Tramite la registrazione per ricevere notifica delle modifiche delle proprietà di ConnectionProfile, l'app di Windows Runtime connessa può effettuare le scelte giuste per adattare il comportamento alle variazioni dell'ambiente di rete. Per altre informazioni su come registrarti per ricevere queste notifiche, vedi Come gestire gli eventi di connessione di rete e le modifiche della disponibilità.

Per scenari più specifici, come nel caso di applicazioni connesse per dispositivi mobili che usano spesso opzioni di roaming e operano su reti a consumo, ConnectionProfile fornisce informazioni su costi e piani dati che possono essere usate per evitare di incorrere in spese impreviste. Per altre informazioni, vedi Come gestire i vincoli di costo per le reti a consumo.

Ogni ConnectionProfile fornisce le seguenti informazioni sulla connessione:

Dati Forniti da Descrizione

Costo connessione

ConnectionCost

Informazioni dettagliate sui costi, inclusi limite dati e informazioni di roaming.

Tipo di costo

NetworkCostType

Il tipo di costo della rete attualmente usata dalla connessione.

Stato e uso del piano dati

DataPlanStatus, DataPlanUsage

Informazioni sull'uso del piano dati associato alla connessione.

Uso locale

NetworkUsage

Informazioni sull'uso della connessione locale.

Scheda di rete

NetworkAdapter

La scheda di rete che fornisce la connettività per la connessione.

Proprietà delle connessioni WLAN e WWAN

WlanConnectionProfileDetails

WwanConnectionProfileDetails

Fornisce ulteriori informazioni specifiche dei profili di connessione WLAN e WWAN.

 

Recupero dei profili di connessione

Come prima cosa definiamo un'istanza di NetworkInformation, che definisce i metodi usati dall'app per recuperare un ConnectionProfile. Definiamo inoltre un'istanza di NetworkCostType, che definisce i tipi di costi di rete possibili associati a un ConnectionProfile.

var networkInfo = Windows.Networking.Connectivity.NetworkInformation;
var networkCostInfo = Windows.Networking.Connectivity.NetworkCostType;

La classe NetworkInformation definisce due metodi per il recupero di un ConnectionProfile. Se devi restituire solo il profilo associato alla connessione Internet, usa il metodo getInternetConnectionProfile.

Per le chiamate della maggior parte dei metodi di rete asincroni devi quindi scrivere codice per gestire le eccezioni. Inoltre, i metodi nello spazio dei nomi Windows.Networking.Connectivity che recuperano un ConnectionProfile possono generare eccezioni. Il gestore delle eccezioni può recuperare ulteriori dettagli sulla causa in modo da comprendere meglio l'errore e prendere le decisioni appropriate. Per ulteriori informazioni, vedi Come gestire le eccezioni nelle app di rete.

function displayInternetConnectionProfileInfo() {
    try {
        // get the ConnectionProfile that is currently used to connect to the Internet
        var internetProfile = networkInfo.getInternetConnectionProfile();
        mySample.displayStatus(GetConnectionProfileInfo(internetProfile));
    }
    catch (e) {
        mySample.displayError("Exception Caught: " + e + "\n\r");
    }
}

Se desideri recuperare i profili di tutte le connessioni, inclusa la connessione Internet, usa il metodo getConnectionProfiles.

function displayConnectionProfileList() {
  var profileList = "";
  try {
      var ConnectionProfiles = networkInfo.getConnectionProfiles();
      if (ConnectionProfiles.length != 0) {
          for (var i = 0; i < ConnectionProfiles.length; i++) {

              //Display Connection profile info for each profile
              profileList += GetConnectionProfileInfo(ConnectionProfiles[i]);
              profileList += "-----------------------------------------\n\r";
          }
          mySample.displayStatus(profileList);
          }
          else {
              mySample.displayStatus("No profiles found");
          }
      }

      catch (e) {
         mySample.displayError("Exception Caught: " + e + "\n\r");
      }
}

Accesso alle informazioni da un profilo di connessione

L'esempio di codice seguente chiama i metodi del ConnectionProfile per recuperare le informazioni relative allo stato, al costo e all'uso del piano dati della connessione di rete.

function getConnectionProfileInfo(connectionProfile) {

    if (connectionProfile == null) {
        return "";
    }

    try {
        var returnString = "ProfileName: " + connectionProfile.profileName + "\n\r";

        switch (connectionProfile.getNetworkConnectivityLevel()) {
            case networkConnectivityInfo.none:
                returnString += "Connectivity Level: None\n\r";
                break;
            case networkConnectivityInfo.localAccess:
                returnString += "Connectivity Level: Local Access\n\r";
                break;
            case networkConnectivityInfo.constrainedInternetAccess:
                returnString += "Connectivity Level: Constrained Internet Access\n\r";
                break;
            case networkConnectivityInfo.internetAccess:
                returnString += "Connectivity Level: Internet Access\n\r";
                break;
        }

        //Display Connection cost info
        returnString += "Connection Cost Information:\n\r";
        returnString += "===============\n\r";
        var connectionCost = connectionProfile.getConnectionCost();
        returnString += "Cost Type: " + GetCostType(connectionCost.networkCostType) + "\n\r";
        returnString += "Roaming: " + connectionCost.roaming + "\n\r";
        returnString += "Over Datalimit: " + connectionCost.overDataLimit + "\n\r";
        returnString += "Approaching Datalimit: " + connectionCost.approachingDataLimit + "\n\r";

        //Display Dataplan status info
        returnString += "Dataplan Status Information:\n\r";
        returnString += "===============\n\r";
        var dataPlanStatus = connectionProfile.getDataPlanStatus();
        if (dataPlanStatus.dataPlanUsage != null) {
            returnString += "Usage In Megabytes: " + dataPlanStatus.dataPlanUsage.megabytesUsed + "\n\r";
            returnString += "Last Sync Time: " + dataPlanStatus.dataPlanUsage.lastSyncTime + "\n\r";
        }
        else {
            returnString += "Dataplan Usage: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.InboundBitsPerSecond != null) {
            returnString += "Inbound Bits Per Second: " + dataPlanStatus.InboundBitsPerSecond + "\n\r";
        }
        else {
            returnString += "Inbound Bits Per Second: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.OutboundBitsPerSecond != null) {
            returnString += "Outbound Bits Per Second: " + dataPlanStatus.OutboundBitsPerSecond + "\n\r";
        }
        else {
            returnString += "Outbound Bits Per Second: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.dataLimitInMegabytes != null) {
            returnString += "Data Limit In Megabytes: " + dataPlanStatus.dataLimitInMegabytes + "\n\r";
        }
        else {
            returnString += "Data Limit In Megabytes: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.nextBillingCycle != null) {
            returnString += "Next Billing Cycle: " + dataPlanStatus.nextBillingCycle + "\n\r";
        }
        else {
            returnString += "Next Billing Cycle: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.maxDownloadFileSizeInMegabytes != null) {
            returnString += "Maximum Download File Size in Megabytes: " + dataPlanStatus.maxDownloadFileSizeInMegabytes + "\n\r";
        }
        else {
            returnString += "Maximum Download File Size in Megabytes: " + "Not Defined" + "\n\r";
        }
            returnString += "Cost Based Suggestions: " + CostBasedSuggestions(connectionCost) + "\n\r";
        }

    catch (e) {
        mySample.displayError("Exception Caught: " + e + "\n\r");
    }

    return returnString;
}

In questo argomento abbiamo visto come recuperare i profili di connessione e le informazioni sulla connettività contenute in ogni profilo. Usare queste informazioni per consentire alla tua app di fare scelte appropriate è fondamentale per garantire un'esperienza di connessione affidabile.

Per altre linee guida e procedure consigliate sull'uso delle informazioni di connessione per adattare il comportamento dell'app connessa in rete, vedi Come gestire gli eventi di connessione di rete e le modifiche della disponibilità.

Argomenti correlati

Altro

Creazione della prima app di Windows Runtime in JavaScript

Come gestire le eccezioni nelle app di rete

Come gestire gli eventi di connessione di rete e le modifiche della disponibilità

Come gestire i vincoli di costo per le reti a consumo

Come recuperare le informazioni su scheda di rete e località

Come recuperare le informazioni sull'uso della connessione di rete

Riferimenti

ConnectionProfile

DataPlanStatus

NetworkInformation

Windows.Networking.Connectivity

Esempi

Esempio di informazioni di rete

Esempio di background di stato di rete