Los desarrolladores de .NET y en especial los que usamos C# ya conocíamos la compilación condicional para establecer diferentes parámetros dependiendo del modo de ejecución de la aplicación que estuviéramos desarrollando, por ejemplo, cambiar parámetros en una ejecución de depuración (DEBUG) que difieran de los de producción.
#if DEBUG // Código a ejecutar si se ejecuta en modo depuración #else // Código a ejecutar fuera del modo depuración #endif
Dado que en el desarrollo de Apps multiplataforma tenemos que poder diferenciar entre dispositivos, Xamarin.Forms nos aporta las siguientes símbolos:
#if __MOBILE__ //Código específico para Android e iOS #endif
#if __IOS__ //Código específico para iOS #endif
#if __ANDROID__ //Código específico para Android #endif
También podemos ser más específicos afinando en la versión de Android
#if __ ANDROID _11__ //Código específico para Android 3.0 Honeycomb o superior #endif
Para Windows Phone se definen dos símbolos, WINDOWS_PHONE y SILVERLIGHT
#if __WINDOWS_PHONE__ //Código específico para Windows Phone #endif #if __SILVERLIGHT__ //Código específico para Windows Phone #endif
Esto nos permitirá ejecutar nuestra aplicación con diferentes códigos por ejemplo para mostrar un Hello world personalizado.
NOTA: En Portable Class Libraries (PCL) no funciona la directiva #if con lo que tendremos que buscar una alternativa como la que os muestro en el siguiente punto
Además de la compilación condicional, en Xamarin.Forms disponemos de otra opción tanto para código C# como para XAML donde podemos diferenciar también entre las diferentes plataformas.
En C# tendremos que hacer uso de Device.OnPlatform que nos permite diferenciar entre plataformas.
Device.OnPlatform( Android:()=> { myLabel.Text = “Hello World from Android” }, iOS: () => { myLabel.Text = “Hello World from iOS”}, WinPhone: () => {myLabel.Text = “Hello World from Windows Phone”} );
En XAML podemos hacer lo mismo que con C# pero, evidentemente con XAML
<Label> <Label.Text> <OnPlatform x:TypeArguments="Text" iOS="Hello World from iOS" Android="Hello World from Android" WinPhone="Hello World from Windows Phone"/> </Label.Text> Label>
Xamarin.Forms no sólo ofrece una alta productividad a la hora de desarrollar aplicaciones multiplataforma, sino que, unida a la posibilidad de diferenciar plataformas en código para realizar cosas específicas como por ejemplo establecer diferentes separaciones con paddings, también ofrece la posibilidad de realizar tareas específicas en función de la plataforma mejorando así la experiencia de desarrollo y, por tanto, también la experiencia de usuario.
Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)