Este artículo cubrirá algunos de los conceptos y decisiones involucrados en el diseño de una aplicación móvil para múltiples plataformas. Las consideraciones discutidas tratarán principalmente con una aplicación multiplataforma dirigida a Android e iOS, y está escrita desde la perspectiva de un desarrollador web que está dando sus primeros pasos en el mundo móvil. Analizaremos algunas de las diferencias entre las plataformas y el diseño de su interfaz de usuario, y también examinaremos los pros y los contras del desarrollo multiplataforma en general, así como los detalles específicos de muchos de los más populares marcos multiplataforma..
Hay muchas cosas a considerar al diseñar una aplicación móvil. Antes de que incluso pueda dibujar un alámbrico o escribir una línea de código, debe pensar qué hará su aplicación, para quién es y dónde se ejecutará. Quizás una de las decisiones más importantes es la plataforma (s) a la que se dirigirá su aplicación. Hay muchos para elegir: iOS, Android, MeeGo, WebOS, BlackBerry OS, Symbian, Windows Phone 7, Maemo, y más en el camino!
Por supuesto, la mayoría de nosotros solo estamos interesados en los dos grandes contendientes: iOS y Android. Si desea que su aplicación o servicio llegue a la mayor audiencia posible, desarrollar para al menos estos dos tiene sentido.
Una vez que haya decidido diseñar su última aplicación para más de una plataforma, encontrará aún más decisiones que deben tomarse antes de que pueda escribir su primera línea de código. Decisiones como:
Trabajar en la misma aplicación o servicio para más de una plataforma no debería significar reinventar la aplicación desde cero en cada una. Reutilizar componentes y partes de su diseño cuando sea posible reducirá su carga de trabajo y ayudará a que su marca sea reconocible.
Este es más complicado y depende mucho de sus necesidades. Cuando se trata del diseño de la interfaz de usuario y los elementos gráficos, hay muchas cosas que puede reutilizar con solo pequeños cambios para que su idea se ajuste a las dos plataformas más populares..
Los frameworks multiplataforma facilitan mucho el reciclaje de tus esfuerzos. Pero existen ventajas y desventajas definidas para el desarrollo con un marco híbrido en lugar de usar la plataforma SDK nativa. También hay tantos frameworks multiplataforma como plataformas existen hoy en día. Más adelante en este artículo examinaremos algunos de los marcos más prominentes disponibles y, al final de este artículo, se discutirán los pros y los contras de desarrollar la elección de un marco multiplataforma..
Este es uno de los puntos más importantes en el desarrollo móvil. Puedes tener la mejor idea y un buen código que la impulsa, pero si no es atractiva y fácil de navegar, los usuarios buscarán en otra parte. El uso de un SDK multiplataforma puede tener un impacto dramático en el diseño de su interfaz de usuario, permitiéndole reutilizar grandes porciones del mismo, pero también posiblemente limitar algunas de sus opciones..
Bueno, la respuesta aquí no es un simple "sí" o "no". Discutiremos esto en detalle en la siguiente sección..
Una interfaz de usuario completamente personalizada para cada plataforma de implementación es un patrón muy común en el diseño de juegos y hacerlo funciona bastante bien.
Plants vs Zombies en Android
Plants vs Zombies en iOS
Por qué? Parte de jugar un juego es aprender cómo funcionan los controles y la interfaz para el juego, incluido cómo navegar por su interfaz de usuario. Los comportamientos extravagantes y divertidos con una apariencia personalizada y personalizada en la interfaz de usuario son prácticamente esenciales para crear una buena experiencia de juego..
El tiempo es una de las mayores influencias de diseño que tendrá su interfaz de usuario si está diseñando para una aplicación funcional. Los usuarios desean pasar de su página principal a la misión cumplida en la menor cantidad de toques posible. Tener una interfaz con señales familiares, que los usuarios reconozcan y recuerden que el uso en otras aplicaciones en la plataforma hará que su aplicación sea más amigable y más ágil para los usuarios primerizos. Pero eso no significa necesariamente que la puerta esté completamente cerrada en la personalización..
Ya sea que haya elegido utilizar la API nativa o una API multiplataforma, hay mucho que puede hacer con su diseño de interfaz de usuario para realmente sobresalir sin destruir la confianza de los usuarios o alejarlos demasiado de su zona de confort..
Y la verdad es que, si lo desea, diseñar y desarrollar con plataformas multiplataforma puede significar que no tiene más remedio que crear una IU personalizada. Dependiendo del marco que haya seleccionado, puede o no tener acceso a elementos de la interfaz de usuario nativos. Pero incluso si se queda sin controles nativos, o si solo está superando los límites de la API nativa, aún puede seguir patrones de diseño que harán que los usuarios se sientan como en casa en su aplicación..
Se trata de equilibrio. Echa un vistazo a algunos de los grandes nombres y lo que están haciendo con sus aplicaciones. Tomar el Facebook aplicación, por ejemplo: muestra un buen equilibrio entre el cumplimiento de las consideraciones de UX de la plataforma y el reconocimiento de la marca.
La aplicación de Facebook en Android
La aplicación de Facebook en iOS
Inmediatamente es reconocible como una aplicación de Facebook, sin importar en qué plataforma estés. Pero también incorpora esos familiar elementos y patrones a los que los usuarios están acostumbrados, lo que hace que sea tan fácil para el propietario de un iPhone entrar y ponerse en marcha como lo es para el propietario de un Galaxy.
La aplicación Tweetdeck es un ejemplo aún mejor..
La aplicación TweetDeck en Android
La aplicación TweetDeck en iOS
Irónicamente, la aplicación oficial de Twitter es, en mi opinión, un buen ejemplo de diseño multiplataforma que salió mal..
La aplicación de Twitter en Android
La aplicación de Twitter en iOS
El truco aquí está en las barras de herramientas y los controles de navegación. Esas barras en la parte superior e inferior de la pantalla, la barra de acción, la barra de navegación y patrones de diseño similares deben mantenerse de acuerdo con el estándar de la plataforma. Puede modificar un poco el color y el estilo, pero la funcionalidad y el aspecto general deben ser reconocibles al instante. Sin embargo, su contenido puede tener un aspecto mucho más único, por lo que le queda un diseño bastante coherente en todas las plataformas. ¿Hasta dónde puede llevarlo? Bueno, eche un vistazo a sitios como TappGala y vea lo que otros se están escapando.
Al diseñar, tenga en cuenta las diferencias sutiles, y no tan sutiles, entre plataformas. Uno de los más grandes es la interfaz física, los botones de hardware reales en el dispositivo. El iPhone solo tiene un botón que se basa en botones suaves en la interfaz de usuario para todo lo demás. Los dispositivos Android, por otro lado, tienen tres botones estándar. El menú, el botón de retroceso y el botón de inicio. Los usuarios de Android se confundirán si el uso de estos no produce un resultado en su aplicación multiplataforma. Android también tiene un menú contextual, al que se accede desde el botón de menú, que le brinda otro lugar para controles avanzados. Tendrá que hacer ajustes en su diseño de iOS para estos botones y menús que faltan con opciones suaves.
Si está diseñando y desarrollando plataformas de múltiples dispositivos, puede reciclar más que solo sus elementos de diseño. Dependiendo de sus requisitos, hay una serie de marcos multiplataforma que pueden ayudarlo a consolidar su base de código.
Si eres un desarrollador web frontend, te sentirás como en casa con PhoneGap. Usando su conocimiento existente de HTML, CSS y JavaScript, puede desarrollar aplicaciones rápidamente. PhoneGap es esencialmente WebKit con una API de JavaScript personalizada que envuelve la API nativa. También es una excelente opción para adaptar sus aplicaciones web existentes y promocionarlas a aplicaciones móviles de pleno derecho. Puede usar cualquiera de sus herramientas web favoritas del lado del cliente, incluidos los marcos de JavaScript como jQuery Mobile o SenchaTouch.
Desafortunadamente, debido a que su aplicación se queda sin una instancia de navegador WebKit, el rendimiento no será tan nuevo como las aplicaciones nativas o incluso lo que proporcionan otros marcos disponibles. Tampoco tendrá acceso a los controles de la interfaz de usuario nativos (aunque puede crear su propio tema para que sea similar con CSS). PhoneGap proporciona un excelente servicio de compilación alojado, que le permite desarrollar aplicaciones localmente, y luego cargarlas y compilarlas con su servicio en línea. Esto es genial si no tienes una Mac para el desarrollo y las pruebas nativas de iOS. Antes de decidir utilizar PhoneGap, asegúrese de verificar que sea compatible con todas las funciones que necesita para sus plataformas de destino. Afortunadamente, el proyecto de PhoneGap es de código abierto y completamente extensible, por lo que siempre puedes agregar las funciones que faltan por tu cuenta si es necesario hacerlo..
Para ver más ejemplos de aplicaciones creadas con PhoneGap, visite el sitio oficial de demostración.
¡A los desarrolladores de Rails les encantará este! Con RhoMobile puedes desarrollar tus aplicaciones en Ruby con un fuerte enfoque de MVC. Las vistas están diseñadas con HTML, CSS y Javascript, para que pueda llevar todas sus habilidades de desarrollo web con usted. Nuevamente, este marco no tiene soporte estándar para los controles nativos, pero hay extensiones disponibles que te permitirán acceder a ellos..
Rhodes también tiene un gran servicio de compilación alojado, RhoHub, y algunas características empresariales e industriales interesantes, como Rhosync y NFC. Hay un énfasis definitivo en RhoMobile como una solución para aplicaciones empresariales. El marco también es extensible, por lo que puede agregar sus propias bibliotecas nativas y gemas de Ruby. El rendimiento es bastante bueno ya que su aplicación será precompilada a un código de byte.
Para ver más ejemplos de aplicaciones creadas con RhoMobile, visite el sitio oficial de demostración.
Titanium Mobile es otro marco que se adaptará a los desarrolladores web que se mudan al espacio móvil. Titanium inicialmente adoptó un enfoque similar a PhoneGap, proporcionando una vista web que envolvía las API nativas. Pero, desde la v1.0, Titanium ha sido un compilador cruzado totalmente basado en JavaScript, con acceso a elementos de la interfaz de usuario nativos del dispositivo y un enorme aumento de rendimiento..
La versión 1.5 también presentó JSS, Javascript Stylsheets, modelado en CSS, proporcionando un sistema de diseño flexible que se puede usar para adaptar sus vistas para diferentes dispositivos. Los espacios de nombres separados también están disponibles para el soporte específico de la plataforma. Puede usar cualquier IDE que desee para desarrollar su código, y Titanium Developer se usa para preparar y empaquetar su aplicación (aunque la depuración puede ser una molestia).
Para ver más ejemplos de aplicaciones creadas con Titanium Mobile, visite el sitio oficial de demostración.
Ansca fue fundada por los antiguos ingenieros de Flash y Adobe, y su experiencia se muestra en la implementación de Corona SDK. Corona tiene una API bien redondeada con un énfasis definitivo en el desarrollo rápido de juegos 2D de alto rendimiento. La API incluye muchas opciones para acelerar el desarrollo de juegos, como la física de Box2D, el soporte OpenGL + OpenAL, las funciones de animación y la gestión de escenas y sprites. Corona incluso incluye algunas herramientas de migración fáciles para aplicaciones Flash y desarrolladores de ActionScript.
Cualquier persona con un historial de desarrollo de juegos o Flash se sentirá muy cómodo con el lenguaje de scripting Lua y el conjunto de herramientas Corona. Ansca también proporciona un entorno en línea con un lugar para promocionar su aplicación, compartir recursos de código y descargar complementos de terceros. Tampoco se trata solo de juegos, Corona también ofrece una biblioteca de widgets de UI y algunos elementos nativos para desarrolladores de aplicaciones útiles. Todo esto es muy atractivo, pero tiene un precio: $ 199 / año para desarrolladores que se centran en una sola plataforma (iOS o Android) y $ 349 / año para soporte de iOS y Android..
Para ver más ejemplos de aplicaciones creadas con Corona SDK, visite el sitio oficial de demostración.
Unity es esencialmente un motor de juego con secuencias de comandos con su propio y potente IDE. Diseñado para el desarrollo de juegos de alto rendimiento en una multitud de plataformas, incluidas las consolas y la web, este es el sueño de un desarrollador de juegos hecho realidad. Sin embargo, es definitivamente solo para el desarrollo de juegos en 3D, por lo que los desarrolladores de aplicaciones deberían buscar en otra parte. Si bien proporcionan una versión gratuita del marco, para disfrutar realmente de todos los beneficios de Unity, tendrá que invertir una buena cantidad de dinero en efectivo, con una licencia profesional por $ 1,500 USD más cargos adicionales por complementos.
Para ver más ejemplos de aplicaciones creadas con Unity3D, visite el sitio oficial de demostración.
Lo que sigue es una lista de ventajas y desventajas asociadas con el uso de un SDK de terceros para desarrollar aplicaciones multiplataforma.
Una vez que se comprometa con un marco, sus proyectos se vuelven dependientes de un tercero. Querrá elegir un marco estable que tenga un desarrollador dedicado (preferiblemente desarrolladores) y una gran comunidad. Los marcos de código abierto ofrecen algo de seguridad aquí. Debido a que tiene acceso a la fuente, si el desarrollador abandona el SDK en el futuro, usted u otros podrían continuar su desarrollo.
Lleva tiempo que los cambios en la API de la plataforma se filtren a través de varios SDK de terceros. Es posible que tenga que esperar un rato para que las últimas y mejores funciones estén disponibles, si están disponibles. Una vez más, confía en el compromiso del desarrollador del SDK con el proyecto.
Los SDK multiplataforma son una abstracción de las distintas plataformas en una interfaz uniforme que, en teoría, debería facilitar el desarrollo. Pero al mismo tiempo, esta abstracción confunde su acceso a la API subyacente y, como resultado, su conjunto de funciones puede ser más limitado. Con la API oficial, nativa, solo está limitado por el hardware y las decisiones de diseño ocasionales tomadas por Google o Apple. Un punto relacionado: las tareas de servicio pesado, como la renderización 3D y el procesamiento de video / audio, pueden ser especialmente limitadas en el enfoque que puede tomar, si es posible..
El beneficio más obvio de elegir un SDK multiplataforma es reducir su esfuerzo general para un proyecto determinado. Al dirigirse a una única API, ahorra mucho en el desarrollo y mantenimiento del código base.
Esto se remonta a los contras de API frescura y control limitado. Muchos marcos incluyen alguna arquitectura de extensión o complemento que le permite construir una biblioteca nativa e integrarla en el SDK. Esto realmente le brinda lo mejor de ambos mundos, puede desarrollar características avanzadas o faltantes con las herramientas nativas y luego usar el SDK multiplataforma para tareas comunes.
La selección de un SDK multiplataforma que coincida con su conjunto de habilidades actual reduce su curva de aprendizaje. En equipos más grandes que tienen una herramienta para el trabajo, esto también puede significar menos tiempo de diseño, tiempo de capacitación y menos desarrolladores necesarios para implementar el proyecto..
La mayoría de los marcos multiplataforma no solo proporcionan una herramienta para muchos trabajos, sino que también simplifican el desarrollo con lenguajes dinámicos y bibliotecas integrales para tareas comunes y repetitivas..
Para hacer la vida aún más fácil, varios de los marcos principales tienen repositorios oficiales para compartir código y activos o comprarlos a otros desarrolladores..
Solo debe considerar un marco multiplataforma si se ajusta a sus requisitos y conjunto de habilidades. Realice una investigación cuidadosa y asegúrese de que la herramienta de desarrollo elegida sea compatible con todas las funciones que desea incluir en su aplicación. No habría nada peor que llegar a la mitad del desarrollo antes de que se dé cuenta de que el SDK que está utilizando no admite un requisito funcional clave. Solo tenga en cuenta que muchos de los marcos admiten las extensiones, lo que le permite agregar módulos nativos para llenar los vacíos dejados por los desarrolladores de SDK principales. En última instancia, un marco multiplataforma debería reducir su carga de trabajo, no acumular más problemas en su agenda ya ocupada!