Démarrage rapide : récupération des informations de connexion réseau (applications du Windows Store en JavaScript et HTML)

Cette rubrique vous montre comment récupérer les informations de connectivité et d’utilisation pour les connexions réseau d’un périphérique.

Prérequis

Les exemples suivants utilisent JavaScript et s’appuient sur l’exemple d’informations réseau. Pour obtenir de l’aide sur la création de votre première application, voir Créer votre première application du Windows Store en JavaScript.

Pour préparer votre application du Windows Store à une mise en réseau, vous devez définir cette fonctionnalité dans le fichier Package.appxmanifest du projet. Pour obtenir une définition de chaque fonctionnalité réseau, voir Comment configurer les fonctionnalités d’isolement réseau.

Qu’est-ce qu’un profil de connexion ?

Un objet ConnectionProfile représente une connexion réseau particulière établie sur un périphérique. Les informations accessibles dans un objet ConnectionProfile peuvent être utilisées pour déterminer le niveau de connectivité actuel, effectuer le suivi de l’utilisation des données ou identifier la carte réseau utilisée par une connexion. Si votre application du Windows Store est inscrite pour être informée des modifications apportées aux propriétés de ConnectionProfile, elle peut effectuer les choix appropriés lorsqu’elle adapte son comportement aux modifications d’un environnement réseau. Pour plus d’informations sur l’inscription aux notifications de modifications, voir Démarrage rapide : gestion des événements de connexion et des changements de disponibilité.

Dans des scénarios plus spécifiques, comme celui d’applications connectées pour les appareils mobiles qui sont souvent itinérants et fonctionnent sur des réseaux limités, un objet ConnectionProfile offre des informations sur le coût et le forfait données qui peuvent être utilisées pour éviter des frais de service opérateur inattendus. Pour plus d’informations, voir Démarrage rapide : gestion des contraintes de coût des connexions réseau limitées.

Récupération de profils de connexion

Nous devons commencer par définir quelques variables : une instance de NetworkInformation, qui définit les méthodes utilisées par votre application pour récupérer un ConnectionProfile et une instance de NetworkCostType, qui définit les types de coûts réseau possibles exprimés par un ConnectionProfile.

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

La classe NetworkInformation définit deux méthodes de récupération de ConnectionProfile. La méthode GetInternetConnectionProfile récupère uniquement le profil associé à la connexion Internet.

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

La méthode GetConnectionProfiles récupère quant à elle les profils de toutes les connexions actuellement établies sur un périphérique, y compris la connexion 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");
    }
}

Accès aux informations depuis un profil de connexion

Dans chaque objet ConnectionProfile, les informations de connexion suivantes sont accessibles :

Données Fournies par Description

Coût de connexion

ConnectionCost

Fournit des informations détaillées sur le coût de connexion, notamment des informations sur la limite de données et l’itinérance.

Type de coût

NetworkCostType

Indique le type de coût du réseau actuellement utilisé par la connexion.

Statut et utilisation du forfait données

DataPlanStatus, DataPlanUsage

Fournit des informations d’utilisation spécifiques au forfait données associé à la connexion.

Utilisation locale

DataUsage

Fournit des informations d’utilisation de la connexion locale.

Carte réseau

NetworkAdapter

Identifie la carte réseau qui fournit la connectivité de la connexion.

 

Lorsqu’un objet ConnectionProfile est passé à l’exemple de fonction suivant, celui-ci appelle les méthodes définies par l’objet pour récupérer les informations sur l’état de la connexion et son utilisation.

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

Récapitulatif

Dans cette rubrique, nous avons vu comment récupérer des profils de connexion et les informations de connectivité que chaque profil contient. L’utilisation de ces informations pour aider votre application à faire les bons choix est essentielle pour garantir la fiabilité de l’expérience connectée.

Pour obtenir des instructions supplémentaires ou les meilleures pratiques préconisées pour l’utilisation des informations de connexion pour guider le comportement de votre application réseau, voir Démarrage rapide : gestion des événements de connexion et des changements de disponibilité.

Rubriques associées

Exemple d’informations réseau

Démarrage rapide : gestion des événements de connexion et des changements de disponibilité

Comment récupérer des données d’utilisation de connexion pour une période donnée

Comment récupérer des informations de carte réseau et de localité