Xamarin.Essentials: Conectividad

La clase Connectivity permite supervisar los cambios en las condiciones de red del dispositivo, revisar el acceso actual a la red y cómo está conectado actualmente.

Primeros pasos

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.

Para acceder a la funcionalidad Connectivity, se requiere la siguiente configuración específica para la plataforma.

El permiso AccessNetworkState es necesario y se debe configurar en el proyecto Android. Se puede agregar de las siguientes maneras:

Abra el archivo AssemblyInfo.cs de la carpeta Propiedades y agregue lo siguiente:

[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]

O BIEN, actualice el manifiesto de Android:

Abra el archivo AndroidManifest.xml de la carpeta Propiedades y agregue lo siguiente dentro del nodo manifest.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

O haga clic con el botón derecho en el proyecto de Android y abra las propiedades del proyecto. En Manifiesto de Android, busque el área Permisos requeridos: y compruebe el permiso Access Network State (Estado de red de acceso). Esto actualizará automáticamente el archivo AndroidManifest.xml.

Uso de Connectivity

Agregue una referencia a Xamarin.Essentials en la clase:

using Xamarin.Essentials;

Compruebe el acceso de red actual:

var current = Connectivity.NetworkAccess;

if (current == NetworkAccess.Internet)
{
    // Connection to internet is available
}

Acceso a la red cae en estas categorías:

  • Internet: acceso a Internet y local.
  • ConstrainedInternet: acceso limitado a Internet. Indica la conectividad cautiva del portal, donde se proporciona acceso local a un portal web, pero el acceso a Internet requiere que se proporcionen credenciales específicas a través de un portal.
  • Local: solo acceso a la red local.
  • None: sin conectividad disponible.
  • Unknown: no se puede determinar la conectividad de Internet.

Puede comprobar qué tipo de perfil de conexión el dispositivo usa de manera activa:

var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
    // Active Wi-Fi connection.
}

Cada vez que el perfil de conexión o el acceso a la red cambia, puede recibir un evento cuando se desencadena:

public class ConnectivityTest
{
    public ConnectivityTest()
    {
        // Register for connectivity changes, be sure to unsubscribe when finished
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
    }

    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        var access = e.NetworkAccess;
        var profiles = e.ConnectionProfiles;
    }
}

Limitaciones

Es importante tener en cuenta que puede que NetworkAccess informe Internet, pero no hay disponible acceso total a la Web. Debido a cómo funciona la conectividad en cada plataforma, solo puede garantizar que hay disponible una conexión. Por ejemplo, es posible que el dispositivo esté conectado a una red Wi-Fi, pero el enrutador no está conectado a Internet. En esta instancia, puede que se indique que hay Internet, pero no hay disponible ninguna conexión activa.

API

Encuentre más vídeos de Xamarin en Channel 9 y YouTube.