Xamarin.Forms Utilizando DependencyService

 

Xamarins crea una abstracción sobre la interfaz de usuario de Android, iOS y Windows Phone, permitiendo desarrollarla una única vez con código C# o XAML. Permite crear fácilmente y con rapidez interfaces de usuario nativas compartidas, donde  cada elemento visual en Xamarin.Forms, son mapeados a elementos nativos y comportamientos propios de cada plataforma.

Xamarin.Forms incluye un servicio de dependencia, DependencyService que nos permite compartir interfaces de usuario y resolver con facilidad la implementación de la misma en cada plataforma específica. De esta forma podremos acceder a APIs específicas de cada plataforma desde nuestra PCL o proyecto Shared.

En este artículo vamos a profundizar en el servicio de dependencia de Xamarin.Forms asi como su uso.

El servicio de dependencia nos permite acceder a funcionalidad nativa de cada plataforma resolviendo la implementación de una sencilla interfaz.

Los pasos detallados serían:

  1. Creamos una interfazcomún y compartida donde definimos la funcionalidad a cubrir en la implementación de cada plataforma. Esta interfaz estará definida dentro de nuestra PCL o proyecto Shared.
  2. En cada proyecto de cada plataforma, creamos la implementaciónde la interfaz.
  3. Utilizamos una etiqueta de registroen la implementación de la interfaz en cada plataforma para facilitar al servicio de dependencia la resolución.
  4. En nuestro código compartido (normalmente desde ViewModels) utilizaremosGet<>para obtener la implementación de la interfaz indicada específica de la plataforma en ejecución.

 

Si quieres aprender más de cómo usar esta librería, no dudes en pasarte por Formación Tajamar donde puedes encontrar un pequeño video tutorial llamado DependencyService, donde explico el funcionamiento de dicha clase y la forma  de cómo implementarla. De todas formas vamos a analizar un poco la estructura tomando como referencia dicho video.

Para implementar la librería, creamos un proyecto de tipo cross-platform. Una vez creado el proyecto, insertamos una interfaz en el proyecto portable de la solución, que lo único que contendrá es un método para obtener un mensaje (este mensaje se muestra en una vista de tipo xaml), a continuación se crea una clase por cada tipo de proyecto (droid, IOS, Phone), esta clase contendrá un mensaje diferente  por cada proyecto.

Finalmente, en la clase app del proyecto portable, guardo el mensaje en una variable usando DependencyService.get nombrado anteriormente, para pasárselo a la vista y que lo muestre. El mensaje que la vista mostrará, dependerá el proyecto específico que usemos en el arranque de proyecto. En el caso del vídeo se ejecuta desde el proyecto droid, (para ejecutarlo desde el proyecto IOS tendremos que hacerlo sobre un ordenador Apple, o que por lo menos exista un ordenador Apple en la red donde estemos conectados).

 

Como podréis comprobar es muy fácil de implementar y sencillo de utilizar. Puedes encontrar mi código del video tutorial en mi repositorio de GitHub.

 

Espero que os haya servido de ayuda y nos vemos en próximos posts!.

 

Autor: José Ignacio Rodríguez García

Curso: Microsoft MCSD Web Applications + SharePoint Apps

Centro de Formación: Tajamar Año académico: 2015-2016