Compartir a través de


Cómo recuperar información de conexión de red (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

En este tema te enseñamos a recuperar detalles de conectividad e información de uso sobre las conexiones de red en un dispositivo usando las clases del espacio de nombres Windows.Networking.Connectivity.

Requisitos previos

Los siguientes ejemplos usan JavaScript y se basan en la muestra de información de red. Si necesitas ayuda para crear una aplicación de Windows en tiempo de ejecución con JavaScript, consulta Crear la primera aplicación de Windows en tiempo de ejecución con JavaScript.

¿Qué es un perfil de conexión?

Un ConnectionProfile representa una única conexión de red establecida en un dispositivo. La información a la que se accede desde un ConnectionProfile puede usarse para determinar el nivel de conectividad actual, hacer un seguimiento del uso de los datos o para identificar el adaptador de red que se usa para mantener la conexión. Si te registras para recibir notificaciones sobre los cambios en las propiedades de ConnectionProfile, la aplicación de Windows en tiempo de ejecución conectada puede realizar las elecciones correctas cuando adapte su comportamiento a los cambios en un entorno de red. Para obtener más información sobre cómo registrarte para recibir estas notificaciones, consulta Cómo administrar eventos de conexión de red y cambios de disponibilidad.

En escenarios más especializados, como aplicaciones conectadas para dispositivos móviles que utilizan perfiles móviles con frecuencia y operan en redes de uso medido, un ConnectionProfile ofrece información del plan de datos y del costo que puede emplearse para evitar tarifas de servicio de operador inesperadas. Para obtener más información, consulta Cómo administrar límites de costos de red de uso medido.

Cada ConnectionProfile proporciona acceso a la siguiente información de conexión:

Datos Suministrados por Descripción

Costo de conexión

ConnectionCost

Detalles del costo, incluida la información de roaming y límites de datos.

Tipo de costo

NetworkCostType

Tipo de costo de la red que está usando actualmente la conexión.

Uso y estado del plan de datos

DataPlanStatus, DataPlanUsage

Información específica sobre el uso del plan de datos asociado con la conexión.

Uso local

NetworkUsage

Información sobre el uso de la conexión local.

Adaptador de red

NetworkAdapter

Adaptador de red que proporciona conectividad para la conexión.

Propiedades de conexiones WLAN y WWAN

WlanConnectionProfileDetails

WwanConnectionProfileDetails

Proporciona detalles adicionales que son específicos de los perfiles de conexión WLAN y WWAN.

 

Recuperación de perfiles de conexión

Primero, definamos una instancia de la clase NetworkInformation, que define los métodos que la aplicación usa para recuperar un ConnectionProfile. También definiremos una instancia de la clase NetworkCostType, que define los posibles tipos de costos de red asociados a un ConnectionProfile.

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

La clase NetworkInformation define dos métodos para la recuperación de ConnectionProfile. Si solo necesitas que se devuelva el perfil asociado con la conexión a Internet, usa el método getInternetConnectionProfile.

Debes escribir código para controlar las excepciones cuando llamas a la mayoría de los métodos de red asincrónicos. Asimismo, los métodos del espacio de nombres Windows.Networking.Connectivity que recuperan un ConnectionProfile pueden generar excepciones. Tu controlador de excepciones puede recuperar información más detallada sobre la causa de la excepción para comprender mejor el error y tomar las decisiones adecuadas. Para obtener más información, consulta Cómo controlar excepciones en aplicaciones de red.

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

Si deseas recuperar perfiles de todas las conexiones (incluida la conexión a Internet), usa el método 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");
      }
}

Acceso a información desde un perfil de conexión

En el siguiente código de ejemplo se llama a los métodos en ConnectionProfile para obtener información sobre el estado de conexión de red, el costo y el uso del plan de datos.

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

Resumen

En este tema, revisamos cómo recuperar perfiles de conexión y la información de conectividad que contiene cada perfil. Usar esta información para que la aplicación realice las elecciones acertadas es fundamental para garantizar la confiabilidad de la conexión.

Para obtener instrucciones adicionales y procedimientos recomendados para usar la información de conexión para guiar el comportamiento de tu aplicación en red, consulta Cómo administrar eventos de conexión de red y cambios de disponibilidad.

Temas relacionados

Otros

Crear la primera aplicación de Windows en tiempo de ejecución con JavaScript

Cómo controlar excepciones en aplicaciones de red

Cómo administrar eventos de conexión de red y cambios de disponibilidad

Cómo administrar límites de costos de red de uso medido

Cómo recuperar información de localidad y adaptador de red

Cómo recuperar datos de uso de la conexión de red

Referencia

ConnectionProfile

DataPlanStatus

NetworkInformation

Windows.Networking.Connectivity

Muestras

Muestra de información de red

Muestra del estado de red en segundo plano