Windows Phone: Comprobar la
conectividad del teléfono
_Tu aplicación o juego para Phone 7 (esto vale para Silverlight y XNA)
usa webservices u otros tipos de comunicación con el mundo... en un
entorno tan variante como es el de un móvil, es lógico comprobar que hay
conectividad antes de llamar a un webservice no os parece? Para ello el
espacio de nombres Microsoft.Phone.Net.NetworkInformation tiene cosas
interesantes!
Tenemos a NetworkInterfaceType, que nos devolverá la interfaz de red a la que estamos conectados -es un enumerado con muchísimos valores, que nos dirá si tenemos Wifi, ADSL, etc-, o bien que no hay conexión disponible (NetworkInterfaceType.None). El uso es muy sencillo, aunque la ejecución algo lenta, por lo que hay que tener eso en cuenta cuando lo usemos:
var red = NetworkInterface.NetworkInterfaceType;
if (red == NetworkInterfaceType.Wireless80211)
System.Diagnostics.Debug.WriteLine("estamos con wifi");
else if (red == NetworkInterfaceType.None)
System.Diagnostics.Debug.WriteLine("sin conexión");
En este caso he comrobado si la conexión es wifi, pero si queremos saber si hay conexión valdría con red != NetworkInterfaceType.None
Para ello también existe el método GetIsNetworkAvailable(), más rápido, pero que no funciona con el emulador (siempre devuelve true):
bool hayRed = Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
Así pues si necesitamos acceder a esta información, yo recomendaría crear un método que wrapee esta funcionalidad, y ejecute un método u otro del framework dependiendo de si estamos en modo depuración o no.
Tenemos a NetworkInterfaceType, que nos devolverá la interfaz de red a la que estamos conectados -es un enumerado con muchísimos valores, que nos dirá si tenemos Wifi, ADSL, etc-, o bien que no hay conexión disponible (NetworkInterfaceType.None). El uso es muy sencillo, aunque la ejecución algo lenta, por lo que hay que tener eso en cuenta cuando lo usemos:
var red = NetworkInterface.NetworkInterfaceType;
if (red == NetworkInterfaceType.Wireless80211)
System.Diagnostics.Debug.WriteLine("estamos con wifi");
else if (red == NetworkInterfaceType.None)
System.Diagnostics.Debug.WriteLine("sin conexión");
En este caso he comrobado si la conexión es wifi, pero si queremos saber si hay conexión valdría con red != NetworkInterfaceType.None
Para ello también existe el método GetIsNetworkAvailable(), más rápido, pero que no funciona con el emulador (siempre devuelve true):
bool hayRed = Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
Así pues si necesitamos acceder a esta información, yo recomendaría crear un método que wrapee esta funcionalidad, y ejecute un método u otro del framework dependiendo de si estamos en modo depuración o no.