Xamarin.Essentials: ConectividadXamarin.Essentials: Connectivity

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.The Connectivity class lets you monitor for changes in the device's network conditions, check the current network access, and how it is currently connected.

Primeros pasosGet started

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.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Para acceder a la funcionalidad Connectivity, se requiere la siguiente configuración específica para la plataforma.To access the Connectivity functionality the following platform specific setup is required.

El permiso AccessNetworkState es necesario y se debe configurar en el proyecto Android.The AccessNetworkState permission is required and must be configured in the Android project. Se puede agregar de las siguientes maneras:This can be added in the following ways:

Abra el archivo AssemblyInfo.cs de la carpeta Propiedades y agregue lo siguiente:Open the AssemblyInfo.cs file under the Properties folder and add:

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

O BIEN, actualice el manifiesto de Android:OR Update Android Manifest:

Abra el archivo AndroidManifest.xml de la carpeta Propiedades y agregue lo siguiente dentro del nodo manifest.Open the AndroidManifest.xml file under the Properties folder and add the following inside of the manifest node.

<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.Or right click on the Android project and open the project's properties. En Manifiesto de Android, busque el área Permisos requeridos: y compruebe el permiso Access Network State (Estado de red de acceso).Under Android Manifest find the Required permissions: area and check the Access Network State permission. Esto actualizará automáticamente el archivo AndroidManifest.xml.This will automatically update the AndroidManifest.xml file.

Uso de ConnectivityUsing Connectivity

Agregue una referencia a Xamarin.Essentials en su clase:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Compruebe el acceso de red actual:Check current network access:

var current = Connectivity.NetworkAccess;

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

Acceso a la red cae en estas categorías:Network access falls into the following categories:

  • Internet: acceso a Internet y local.Internet – Local and internet access.
  • ConstrainedInternet: acceso limitado a Internet.ConstrainedInternet – Limited internet access. 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.Indicates captive portal connectivity, where local access to a web portal is provided, but access to the Internet requires that specific credentials are provided via a portal.
  • Local: solo acceso a la red local.Local – Local network access only.
  • None: sin conectividad disponible.None – No connectivity is available.
  • Unknown: no se puede determinar la conectividad de Internet.Unknown – Unable to determine internet connectivity.

Puede comprobar qué tipo de perfil de conexión el dispositivo usa de manera activa:You can check what type of connection profile the device is actively using:

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:Whenever the connection profile or network access changes you can receive an event when triggered:

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

LimitacionesLimitations

Es importante tener en cuenta que puede que NetworkAccess informe Internet, pero no hay disponible acceso total a la Web.It is important to note that it is possible that Internet is reported by NetworkAccess but full access to the web is not available. Debido a cómo funciona la conectividad en cada plataforma, solo puede garantizar que hay disponible una conexión.Due to how connectivity works on each platform it can only guarantee that a connection is available. Por ejemplo, es posible que el dispositivo esté conectado a una red Wi-Fi, pero el enrutador no está conectado a Internet.For instance the device may be connected to a Wi-Fi network, but the router is disconnected from the internet. En esta instancia, puede que se indique que hay Internet, pero no hay disponible ninguna conexión activa.In this instance Internet may be reported, but an active connection is not available.

APIAPI

Obtenga más información sobre The Xamarin Show en Channel 9 y YouTube.Find more of The Xamarin Show on Channel 9 and YouTube.