terceros * Algunos requieren virtualización Android emulators Emuladores del ADK Genymotion (https://www.genymotion.com/) Visual Studio Emulator for Android Emuladores de Android
Instalar el Google USB Driver ✓ Habilitar opciones de desarrollador en tu teléfono y permitir depuración USB Recomendaciones Despliegue y depuración de Apps Android en tu dispositivo
Binding Styles + Triggers Framework multi-plataforma para crear aplicaciones con XAML y C# • Android 4.0+ • iOS 6.1+ • Windows Phone 8.x • Windows 10 (UWP) ¿Qué es Xamarin.Forms?
FontAttributes="Bold“ FontSize="Large" TextColor="Aqua" /> XAML = Extensible Application Markup Language (“zammel”) es un lenguaje basado en XML (eXtensible Markup Language) utilizado para representar la parte visual de una aplicación incluyendo texto, botones, cajas de texto entre otros • Es similar a HTML (páginas web) y CSS a nivel de jerarquías y conceptos de elementos en cascada, colores y atributos de ubicación. > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
lógica de interfaz gráfica en 2 o más partes: o Lógica de apariencia o Lógica de comportamiento • Organizar el código o + Entendible o + Mantenible al crecer luego • Separación de roles: o Diseñador (cómo se ve) o Desarrollador (cómo se comporta) • Utilizar bindings, eventos y patrones de diseño o MV* (MVC, MVVM, MVP, entre otros) o Patrón Comando (Command) Beneficios de utilizar XAML > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
Meetup: Comunidad Xamarin Costa Rica (.Net Mobile Dev Group) http://stvansolano.github.io/blog Name: OK Las vistas son los controles de interacción del usuario Las páginas representan las pantallas que muestra la aplicación
para el proyecto. Puede crear una propia y consumir sus propios recursos (hosting, base de datos, etc) 2. Asegurarse que no haya algún tipo de limitante por parte de la API para su aplicación (Clases no soportadas, licenciamiento, proxies, etc) 3. De no encontrar ninguna, referirse al profesor y coordinar alguna recomendación. Definición de proyecto > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
escogida, de manera que la información desplegada en la API web sea consumible por la aplicación móvil. 5. Realizar los despliegues de información a nivel de 3 niveles de profundidad jerárquica de la API Web. 1 => 2 => 3 Paises -> Detalle del País -> Estados, idiomas, etc > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano Definición de proyecto (II)
✓ Estructura de la aplicación móvil ✓ Conectividad API web ✓ Funcionalidades extra: Almacenamiento local, lógica de negocio, operaciones CRUD, mapas, geolocalización > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano Definición de proyecto (III)
ser entregado como parte del proyecto (API, móvil, assets, etc) ✓ Hospedar en Visual Studio Team Services o GitHub (Agregar al profesor mediante una invitación al correo) ✓ Hospedar proyecto via TFS o Git ✓ Sugerencia: Explorar herramienta y realizar commits/check- ins de acuerdo al avance > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano Definición de proyecto (IV)
En caso de desarrollar su API propia, asegurarse de contar con la disponibilidad durante las fechas de revisión y entrega del proyecto. No se aceptan repositorios comprimidos ni por correo electrónico. Entrega del proyecto (V) > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
REST está diseñado para tomar ventaja de la arquitectura de la WWW • Operaciones implementadas por verbos HTTP • Utiliza URLs que representan recursos accesibles C = Create=> POST R = Read=> GET U = UPdaTe => PUT D = Delete=> DELETE
• Librería especializada para la serialización/deserialización de JSON • Se utiliza mayormente para deserializar contenidos (string->Objecto) • Provee código re-utilizable para el manejo de JSON en aplicaciones .Net de todo tipo (DRY – Don’t Repeat Yourself) • Y por supuesto, disponible para Xamarin
@stvansolano • Clase propia .Net para comunicación HTTP • Namespace System.Net.Http.HttpClient • Compilable y extendible entre las aplicaciones Android, iOS y WinPhone. • Un único código puede manejar las solicitudes en cada plataforma.
@stvansolano Desarrollando con Xamarin • Habilitar permisos de internet para la aplicación. • http://json2csharp.com: Generar C# desde Json • Precaución: HttpClient implementa IDisposable, por lo que requiere liberar recursos de forma responsable • Utilizar IsBusy/ActivityIndicador para interacciones con el usuario • Utilizar ConfigureAwait(false) para llamadas en segundo plano • GetStringAsync vrs. GetAsync (Codigo de respuesta)
@stvansolano Tips para tu aplicación • Prevenir el estado de la conexión (CrossConnectivity.Current.IsConnected) • Caching para reducir llamadas y agilizar respuestas. • Offline data & sync-up • Mantener la seguridad en mente (tokens) • Segmentar llamadas según las necesidades (Carga, Segundo plano y solicitud de usuario)
Twitter: @stvansolano Compartir ”X” cantidad de código escrito en una clase y re-utilizarla entre proyectos móvil y otros tipos de proyecto(web, escritorio y más allá)
– Linus Torvalds -> Padre de Linux •Sistema distribuido para mantener registro de cambios •Cambios? Quién? Cuando? Donde? •Reversión, seguimiento, control de cambios, PRs •Historial
Enterprise •Herramienta “host” de Git más popular del mundo. •Visualización, despliegue y control de Código en línea •Local -> Git -> GitHub <---> Otros sistemas •Integraciones a Ansible, VSTS, Jenkins, DevOps y muchos más.
• Utiliza abstracciones de la lógica que se desea manejar entre plataformas. • El cógido compartido define una interfaz implementable en otros proyectos. • Mediante interfaces podemos separar dependencias e introducir testeabilidad public interface IDialer { bool MakeCall(string number); }
Developers http://stvansolano.github.io/blog Twitter: @stvansolano • Uno o varios proyecto contienen un puntero ”acceso directo” al código en otra ubicación para poder ser compilada
Twitter: @stvansolano • Los proyectos son enlazados pero NO generan dlls intermedios para referencias • El código se utiliza para generar los binarios finales (iOS, Android, UWP) • Es posible utilizar directivas de compilación para cada plataforma • #if Droid, #if iOS, etc
Developers http://stvansolano.github.io/blog Twitter: @stvansolano • Genera dlls comunes y compartibles entre plataformas (Android, iOS, UWP y más) • No es posible utilizar directivas de compilación • Únicamente soporta ciertos conjuntos soportados de .Net
http://stvansolano.github.io/blog Twitter: @stvansolano • PCLs (NuGet) • Abstracciones: Interfaces / Clases abstractas • ServiceLocator: Clase que actúa como mediador para interacción con componentes • IoC: Inversion of Control
Los proyectos de plataforma implementan la lógica específica del sistema operativo móvil • Mediante la interfaz, nuestro código desconoce los detalles específicos y realiza las acciones de manera común public interface IDialer { bool MakeCall(string number); }
• Funcionalidades ”extra” para las aplicaciones • Disponibles como NuGet o paquetes • Algunos requiren permisos/configuración extra http://components.xamarin.com http://developer.xamarin.com
Twitter: @stvansolano • > Nuget (Todos los proyectos) • Tomar fotos, videos • Llamar al Initialize desde el proyecto de Xamarin.Forms (App.xaml.cs) CrossMedia.Current.Initialize();
• Funcionalidades ”extra” para las aplicaciones • Disponibles como NuGet o paquetes • Algunos requiren permisos/configuración extra http://components.xamarin.com http://developer.xamarin.com