Consideraciones de desarrollo multiplataforma

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..

Mucho para pensar

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.

Preguntas multiplataforma

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:

¿Mantiene dos aplicaciones diferentes y completamente independientes, o diseña una aplicación híbrida con un código base??

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.

¿Cuánto de tu aplicación deberías consolidar??

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..

¿Qué pasa con la interfaz de usuario y la personalización??

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..

En caso de que cada plataforma tenga una estética diferente.?

Bueno, la respuesta aquí no es un simple "sí" o "no". Discutiremos esto en detalle en la siguiente sección..

Diseño de interfaz de usuario

Juegos y aplicaciones de entretenimiento

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..

Aplicaciones de utilidad

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.

Cual es la diferencia?

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.

Frameworks multiplataforma

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.

PhoneGap

  • Sitio web: http://www.phonegap.com/
  • Idioma (s): Javascript, HTML, CSS
  • Plataformas: iOS, Android, BlackBerry OS, webOS, Windows Phone 7, Symbian, Bada
  • Licencia: Código abierto (licencia MIT)
  • Apoyo: Paquetes de soporte disponibles
  • Enlaces rápidos: Descargar PhoneGap, instrucciones de instalación, extensión de las instrucciones de PhoneGap, complementos

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..

PhoneGap Showcase:

Aplicación de boceto armonioso
Squeezebox
Orbio

Para ver más ejemplos de aplicaciones creadas con PhoneGap, visite el sitio oficial de demostración.

RhoMobile

  • Sitio web: http://rhomobile.com/
  • Idioma (s): Ruby, HTML, CSS, JavaScript
  • Plataformas: iOS, Android, BlackBerry OS, Windows Phone 7
  • Licencia: Código abierto (licencia MIT)
  • Apoyo: Licencia de soporte empresarial propietaria disponible
  • Enlaces rápidos: Instalación sencilla de RhoStudio, instalación de Ruby Gem, extendiendo Rhodes.

¡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.

RhoMobile Showcase:

Carro Móvil
2Saber
OECU Mobile

Para ver más ejemplos de aplicaciones creadas con RhoMobile, visite el sitio oficial de demostración.

Móvil de titanio de Appcelerator

  • Sitio web: http://www.appcelerator.com/
  • Idioma (s): JavaScript, JSS
  • Plataformas: iOS, Android
  • Licencia: Código abierto (Apache v2 Community Edition)
  • Opciones de pago: Indie ($ 49 / mes), Pro ($ 199 / mes / desarrollador), Enterprise
  • Enlaces rápidos: Compra, descarga, instrucciones de instalación, ampliación de Titanium, mercado de módulos

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).

Escaparate:

Titanio App Reel
GetGlue
Wunderlist

Para ver más ejemplos de aplicaciones creadas con Titanium Mobile, visite el sitio oficial de demostración.

Corona SDK de Ansca

  • Sitio web: http://anscamobile.com/corona/
  • Idioma (s): Lua
  • Plataformas: iOS, Android
  • Licencia: Prueba, plataforma única de $ 199 / año, multiplataforma de $ 349 / año
  • Enlaces rápidos: Compra / descarga, instrucciones de instalación para Mac OSX, para Windows, herramientas de terceros

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..

Escaparate:

ChocoRun
Defensores de magia
Monos explosivos

Para ver más ejemplos de aplicaciones creadas con Corona SDK, visite el sitio oficial de demostración.

Unity3D

  • Sitio web: http://unity3d.com/
  • Idioma (s): IDE con Javascript / C # / Boo Scripting en Mono
  • Plataformas: Web, iOS, Android, Standalone, Wii, PS3, Xbox360
  • Licencia: Gratis, y una versión Pro a partir de $ 1,500 USD. Compruebe la comparación de la licencia y los detalles del precio.

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.

Escaparate:

Unity Spring 2010 Highlight Reel
Pistola Sombra
Max y el marcador mágico
/>

Para ver más ejemplos de aplicaciones creadas con Unity3D, visite el sitio oficial de demostración.

Pros y contras multiplataforma

Lo que sigue es una lista de ventajas y desventajas asociadas con el uso de un SDK de terceros para desarrollar aplicaciones multiplataforma.

Contras

  • SDK Lock In:

    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.

  • API "Frescura":

    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.

  • Control limitado:

    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..

Pros:

  • Esfuerzo consolidado:

    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.

  • Complementos:

    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.

  • Idiomas familiares:

    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..

  • Disminución del tiempo de desarrollo:

    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..

  • Código y compartir activos:

    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..

Envolver

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!