2018/05/26

Xamarin - Lecciones aprendidas 4

Esta es la cuarta parte de las lecciones aprendidas con Xamarin. Espero que puedan tomar algo útil de esta serie de contenidos.

A veces es útil el “uso desmedido” de los Converters:

Los Converters son componentes que permiten establecer una propiedad de un elemento xaml, a partir de un valor que podría no ser del mismo tipo que el requerido por la propiedad. Yo los uso para poner logos (Image) dependiendo del tipo de item (int/string), colores de fondo (Color) dependiendo de si el elemento está seleccionado o no (bool), etc.

Hace unos días tuve que hacer una app a contrarreloj: una calculadora de tasas de espectro, que sirve para definir el valor del espectro radioeléctrico dependiendo de ciertas variables de uso y de los servicios que se van a prestar, basado en el documento de UIT-D “Guidelines for the review of spectrum pricing methodologies and the preparation of spectrum fee schedules”.

Lo importante era velocidad (10 días), pero la app debía tener cierta interacción porque las variables para el cálculo dependen del servicio… velocidad + interacciones = código spaghetti. Entonces decidí, en lugar de usar muchas condicionales, usar muchos Converters.

El código de la Page se ve así:

https://github.com/i2tResearch/SpectrumFees/blob/master/SpectrumFees/Pages/SpectrumFeesPage.xaml

Pero el ViewModel quedó muy simple:

https://github.com/i2tResearch/SpectrumFees/blob/master/SpectrumFees/ViewModels/MainViewModel.cs

Cambiar la versión del assembly antes de (intentar) publicar:

Todas las aplicaciones Android tienen un archivo AndroidManifest.xml que contiene las propiedades de la aplicación, incluyendo versionCode (version number en Visual Studio) y versionName (version name en Visual Studio). El primero es un número secuencial interno que determina si una versión es más reciente que otra. Y el segundo es el número que se le muestra al usuario final (ej. 1.1.4).

Eso debe ser conocido por todos los desarrolladores Android. Lo importante es que en Xamarin también tenemos el archivo AssemblyInfo.cs, cuya propiedad AssemblyVersion debe coincidir con versionName.

[assembly: AssemblyVersion("1.1.4")]

Si los valores no coinciden, la aplicación no se puede publicar.