Detectar la conexión a Internet es una tarea frecuente dentro de las aplicaciones que se publican dentro de Windows Store, por demás esta decir que en el proceso de certificación se evalúa que la aplicación sea resistente a diferentes tipos fallos, una de las cosas que se evalúa es que la aplicación sea resistente a fallas en la red o fallas de conectividad a internet.
Para hacerlo existe la clase NetworkInformation , la cual nos provee múltiples funcionalidades relacionadas con el entorno de red.
Utilizando esta clase he desarrollado una sencilla forma de preguntar si ¿Hay conexión a internet? esta es:
/// <summary> /// Detects Internet Access Connectivity in WinRT /// </summary> /// <remarks> /// This is a Property to put into a class /// requires using Windows.Networking.Connectivity; /// </remarks> public static bool InternetConectivity { get { var prof = NetworkInformation.GetInternetConnectionProfile(); return prof != null && prof.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess; } }
Para mantenerla y mejorarla he creado este Gist en GitHub de tal forma que aquí verán siempre la versión más actualizada.
// hay conexión a internet ? if (InternetConectivity) { //Do Something }
Conoces de algún modo de tener un valor referente al ancho de banda de la conexión de Internet en WinRT
Vicente, si. Con esta misma funcionalidad si revisas el NetworkConnectivityLevel puedes saber si hay buena calidad en la conexión a internet o si hay conexión pobre: NetworkConnectivityLevel.ConstrainedInternetAccess
En este caso para simplificar he utilizado el otro valor pero si te interesa saber de la calidad de la conexión este es el indicado.