tutorial development developing developer apps app c# win-universal-app windows-10-universal

c# - development - windows 10 developer



Cómo verificar el tipo de conectividad de internet en la plataforma universal de Windows (2)

Me gustaría verificar el tipo de conectividad de internet en la aplicación universal de Windows.

  1. No conectado
  2. Conectado a través de WLAN (WiFi)
  3. Conectado a través de WWAN (datos celulares)
  4. Conectado a una red medida

con el fin de proporcionar una opción para descargar contenido de gran tamaño. Y también sentir los cambios significativos en la disponibilidad de la red.

Actualmente, solo puedo comprobar si Internet está conectado o no usando el método GetIsNetworkAvailable de la clase NetworkInterface .

NetworkInterface.GetIsNetworkAvailable();


1. Comprobar la disponibilidad de la conexión a Internet

Para verificar si Internet conectado o no usa el método GetIsNetworkAvailable de la clase NetworkInterface .

bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();

GetIsNetworkAvailable () -
Resumen: indica si hay alguna conexión de red disponible.
Devuelve: true si hay una conexión de red disponible; de lo contrario, false .

2. Comprobar la disponibilidad de la conexión a Internet a través de WWLN (WiFi)

Para verificar si Internet conectado a través de WWAN usa la propiedad IsWlanConnectionProfile de la clase ConnectionProfile

ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;

IsWlanConnectionProfile
Resumen: Obtiene un valor que indica si el perfil de conexión es una conexión WLAN (WiFi). Esto determina si WlanConnectionProfileDetails es nulo o no.
Devoluciones: Indica si el perfil de conexión representa una conexión WLAN (WiFi).

3. Comprobar la disponibilidad de la conexión a Internet a través de WWAN (móvil)

Para comprobar si Internet conectado a través de WWAN usa la propiedad IsWwanConnectionProfile de la clase ConnectionProfile

ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;

IsWwanConnectionProfile
Resumen: Obtiene un valor que indica si el perfil de conexión es una conexión WWAN (móvil). Esto determina si WwanConnectionProfileDetails es nulo o no.
Devoluciones: Indica si el perfil de conexión representa una conexión WWAN (móvil).

Referencia
Respuesta Hippiehunter

4. Comprobar la red medida

Para verificar si se puede acceder a Internet a través de una conexión medida o no, use el método GetConnectionCost en la clase NetworkInterface .

var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost(); if (connectionCost.NetworkCostType == NetworkCostType.Unknown || connectionCost.NetworkCostType == NetworkCostType.Unrestricted) { //Connection cost is unknown/unrestricted } else { //Metered Network }

Referencia (respuesta más detallada aquí)
1. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/JJ835821(v=win.10).aspx
2. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.networking.connectivity.networkcosttype.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

5. Gestionar los cambios de disponibilidad de la red.

Para detectar los cambios significativos en la disponibilidad de la red, use el evento NetworkStatusChanged de la clase NetworkInformation

// register for network status change notifications networkStatusCallback = new NetworkStatusChangedEventHandler(OnNetworkStatusChange); if (!registeredNetworkStatusNotif) { NetworkInformation.NetworkStatusChanged += networkStatusCallback; registeredNetworkStatusNotif = true; } async void OnNetworkStatusChange(object sender) { // get the ConnectionProfile that is currently used to connect to the Internet ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); if (InternetConnectionProfile == null) { await _cd.RunAsync(CoreDispatcherPriority.Normal, () => { rootPage.NotifyUser("Not connected to Internet/n", NotifyType.StatusMessage); }); } else { connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile); await _cd.RunAsync(CoreDispatcherPriority.Normal, () => { rootPage.NotifyUser(connectionProfileInfo, NotifyType.StatusMessage); }); } internetProfileInfo = ""; }

Referencias
https://developerinsider.co/check-internet-connectivity-in-uwp/ https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj835820.aspx https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj835820.aspx https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx

Espero que sea de ayuda a alguien.


Yo uso NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile y IsWwanConnectionProfile . Si ninguno de los dos es true , debería significar que estás en Ethernet o algo así.

Tenga en cuenta que GetInternetConnectionProfile() puede devolver nulo y falsamente puede devolver que hay una conexión activa a Internet cuando la conexión está activa pero DHCP ha fallado.