Guida introduttiva: Recupero delle informazioni sulla connessione di rete (app di Windows Store scritte in JavaScript e HTML)

Questo argomento spiega come recuperare i dettagli sulla connettività e le informazioni di utilizzo per le connessioni di rete in un dispositivo.

Prerequisiti

Gli esempi seguenti usano JavaScript e sono basati sull'esempio di informazioni di rete. Se hai bisogno di aiuto per creare la tua prima app, vedi Creare la prima app di Windows Store in JavaScript.

Per predisporre la tua app di Windows Store per l'uso in rete, devi impostare la funzionalità nel file Package.appxmanifest del progetto. Per una definizione delle singole funzionalità di rete, vedi Come configurare le funzionalità di isolamento della rete.

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. La registrazione per ricevere notifica delle modifiche delle proprietà di ConnectionProfile consente all'app di Windows Store connessa di effettuare le scelte giuste per adattare il comportamento alle variazioni dell'ambiente di rete. Per altre informazioni su come registrarti per ricevere notifica di queste modifiche, vedi Guida introduttiva: Gestione degli eventi di connessione e di modifica della disponibilità.

Per scenari più specialistici, come nel caso di applicazioni connesse per dispositivi mobili che usano spesso opzioni di roaming e operano su reti a consumo, ConnectionProfile offre informazioni su costi e piani dati che possono essere usate per evitare di incorrere in spese impreviste. Per altre informazioni, vedi Guida introduttiva: Gestione dei vincoli di costo per le reti a consumo.

Recupero dei profili di connessione

Come prima cosa dobbiamo definire alcune variabili; un'istanza di NetworkInformation, che definisce i metodi usati dall'app per recuperare un ConnectionProfile. Quindi, un'istanza di NetworkCostType, che definisce i tipi di costi di rete possibili espressi da un ConnectionProfile.

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

La classe NetworkInformation definisce due metodi per il recupero del ConnectionProfile. Il metodo GetInternetConnectionProfile restituisce solo il profilo associato alla connessione Internet.

function DisplayInternetConnectionProfileInfo() {
    try {
        var internetProfile = networkInfo.getInternetConnectionProfile();
        mySample.displayStatus(GetConnectionProfileInfo(internetProfile));
    }
    catch (e) {
        mySample.displayError("Exception Caught: " + e + "\n\r");
    }
}

Il metodo GetConnectionProfiles recupera i profili di tutte le connessioni attualmente attive sul dispositivo, inclusa la connessione Internet.

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

                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

Da ogni ConnectionProfile, è possibile accedere alle seguenti informazioni sulla connessione:

Dati Forniti da Descrizione

Costo connessione

ConnectionCost

Fornisce informazioni dettagliate sul costo della connessione, inclusi il limite dati e le informazioni di roaming.

Tipo di costo

NetworkCostType

Indica il tipo di costo della rete attualmente usata dalla connessione.

Stato e uso del piano dati

DataPlanStatus, DataPlanUsage

Fornisce informazioni sull'uso del piano dati associato alla connessione.

Uso locale

DataUsage

Fornisce informazioni sull'uso della connessione locale.

Scheda di rete

NetworkAdapter

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

 

Quando si passa un ConnectionProfile, la funzione di esempio seguente chiama i metodi definiti dall'oggetto per recuperare le informazioni sullo stato e l'uso della connessione.

function GetConnectionProfileInfo(connectionProfile) {

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

        var returnString = "ProfileName: " + connectionProfile.profileName + "\n\r";
        returnString += "Connected: " + connectionProfile.connected + "\n\r";

        //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 Guida introduttiva: Gestione degli eventi di connessione e di modifica della disponibilità.

Argomenti correlati

Esempio di informazioni di rete

Guida introduttiva: Gestione degli eventi di connessione e di modifica della disponibilità

Come recuperare le informazioni sull'uso della connessione per un periodo di tempo specifico

Come recuperare le informazioni su scheda di rete e località