Introducción a [Xamarin.Essentials]


Resultado de imagen para xamarin essentialsSi bien sabemos qué Xamarin nos permite compartir código de lógica de negocio entre aplicaciones Android y iOS, incluso código relacionado con la UI utilizando Xamarin.Forms. No obstante cómo desarrolladores tenemos la necesidad de utilizar APIs, ya sean nativas o no para cada plataforma. En el primer caso es necesario crear código específico por plataforma.

Gracias a que existen diversos plugins, los cuales nos facilitan el acceso a funcionalidades específicas de cada plataforma nos podemos ahorrar el tirar (escribir) grandes cantidades de código. Pero existe un detalle, y es que el instalar un paquete NuGet o varios y seguir la documentación hace que sea tedioso, mismo por que debemos de conocer desde el nombre del paquete que vayamos a utilizar hasta saber implementarlo y siendo sincero, la verdad es que no sabemos a veces cual usar, puesto que hay varios para cumplir la misma finalidad.

Xamarin.Essentials

Una vez visto el problema, Microsoft decidió hacer un Plugin que integrase los paquetes más comunes, esto con la finalidad de hacerlo más sencillo, y es así que nace Xamarin.Essentials. Cabe destacar que como es un paquete oficial, este lo podemos utilizar en todas nuestras aplicaciones Xamarin simplemente añadiendo el acceso a las APIs multiplataforma, en donde algunos ejemplos pueden ser como el uso del dispositivo para realizar llamadas, envío de correos electrónicos y SMS, entre otros.

De manera resumida, este paquete es la recopilación de los plugins más utilizados en proyectos móviles haciendo uso de Xamarin específicamente, el cual nos ayuda a no tener que instalar demasiados paquetes NuGets en nuestros proyectos.

A continuación, el listado de las API multiplataforma que están disponibles en Xamarin.Essentials:

  • Accelerometer – Obtiene datos del acelerómetro.
  • App Information – Información de la App.
  • Battery – Detectar estado y nivel de la batería.
  • Clipboard – Copiar y pegar desde el Clipboard.
  • Compass – Monitorear cambios en la brújuja.
  • Connectivity – Verificar el estado de conectividad y detectar cambios.
  • Data Transfer – Enviar información a otras Apps.
  • Device Display Information – Obtiene las métricas y la orientación de la pantalla del dispositivo.
  • Device Information – Información del dispositivo.
  • Email – Enviar email.
  • File System Helpers – Forma sencilla de almacenar ficheros.
  • Flashlight – Forma sencilla de encender y apagar la linterna.
  • Geocoding – Geocodificar direcciones y coordenadas.
  • Geolocation – Obtiene la localización del GPS..
  • Gyroscope – Rotación alrededor de los tres ejes principales del dispositivo.
  • Magnetometer – Detecta la orientación del dispositivo en relación con el campo magnético de la Tierra.
  • Open Browser – Forma sencilla de abrir una web en el navegador.
  • Phone Dialer – Abre la App de teléfono.
  • Preferences – Sistema de preferencias rápido y sencillo.
  • Screen Lock – Mantiene la pantalla del dispositivo activa.
  • Secure Storage – Almacenamiento seguro.
  • SMS – Crea un SMS para enviarlo.
  • Text-to-Speech – Sintetizar texto en voz.
  • Version Tracking – Seguimiento de la versión de la aplicación.
  • Vibrate – Hace que el dispositivo vibre.

Las plataformas soportadas (en estos momentos) son:

  • Android 4.4 +
  • iOS 10.0 +
  • UWP 10.0.6299.0 +

Utilizando Xamarin.Essentials

Pasemos a ver cómo utilizarlo. De primera instancia generemos una nueva aplicación de Xamarin.Forms, posteriormente añadamos el paquete NuGet. Este instalémoslo  en todos los proyectos.

Captura de Pantalla 2019-12-19 a la(s) 17.56.21

Tomemos en consideración que Xamarin.Essentials necesita un código especifico de inicialización solo para la plataforma de Android.

Android
En el MainActivity agreguemos lo siguiente en el método OnCreate:

Xamarin.Essentials.Platform.Init(this, bundle);

Para poder gestionar en tiempo de ejecución el acceso a los permisos necesarios, debemos añadir también:

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
     Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
     base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

Una vez realizado lo anterior, podemos tener acceso a cada una de las APIs listadas previamente.

Ejemplo:  Acceso a Internet:

using Xamarin.Essentials;

if (Connectivity.NetworkAccess != NetworkAccess.Internet) 
{
     // No internet access 
}

En el siguiente video James Montemagno nos muestra la funcionalidad de lo antes ya mencionado:

Al igual que Xamarin.Forms, este paquete es Open Source y se puede utilizar GitHub para abrir un Issue o añadir el acceso a una nueva API enviando un Pull Request.

Este artículo hace parte de la iniciativa: Primer Calendario de Xamarin en Español, en donde cada día, se comparten artículos nuevos por la comunidad sobre desarrollo en Xamarin. Esta es mi contribución.

¡Happy Coding!

Más información

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s