tutorial react example apps android iphone ios blackberry cross-platform

android - react - Desarrollo móvil: nativo VS Cross Platform VS JavaScript



react native vs xamarin (3)

Nuestra empresa pronto comenzará a desarrollar pocos productos para plataformas móviles, ya que como CTO se me pidió que examinara los factores Pro y Contras de las diferentes herramientas disponibles para lograr la mejor solución de calidad / costo efectivo.

Apuntaremos principalmente a iOS y Android, secundarios para Windows-Mobile y BlackBerry.

Candidatos:

Después de realizar algunas investigaciones de antecedentes, encontré los siguientes posibles candidatos:

  • Nativo : simple pero laboriosamente desarrolle para cada plataforma con sus herramientas y lenguaje nativos.

  • HTML5, CSS y JavaScript : podría ser un servicio web que se ejecuta en el navegador del dispositivo (un sitio web) o una aplicación que incapsula dicho código en WebKit.

  • Rho mobile - Hecho por Google por lo que debería ser bueno - sin embargo basado en Ruby (con el que no nos sentimos cómodos) y tiene un entorno de desarrollo complejo y bastante frágil.

  • PhoneGap : parece fácil y se basa principalmente en Javascript. Es de código abierto, pero últimamente lo adquirió adobe (no es una buena señal).

  • Appcelerator : cualquier cosa, desde Javascript a PHP y a python, tiene un buen rango de acceso API, pero escuchamos muchas historias de rechazo (por Apple) e incompatibilidades cuando usamos código complejo en diferentes plataformas.

  • Y más como MoSync, Sencha, Appmobi y Corona (no los probó de primera mano).

Algunos puntos de referencia:

  • No estamos planeando desarrollar juegos, las aplicaciones que planeamos desarrollar se encuentran en el ámbito de las aplicaciones comerciales y las herramientas de información.

  • Las aplicaciones no dependen del uso excesivo de las API de los dispositivos (pero sí necesitan un acceso básico menor)

  • La compañía ya desarrolló para iOS y tenemos un pequeño equipo de desarrolladores nativos de iOS (geeks de Objective-C)

  • Nos gustaría estar seguros de que podemos seguir desarrollando nuestras aplicaciones en la función sin que se rompan debido al nuevo sistema operativo o API.

  • Será beneficioso asegurar de antemano que la aplicación no será rechazada debido al código multiplataforma (principalmente AppStore)

  • Al igual que cualquier empresa, nos gustaría ser lo más rentables posible. Por otro lado, insistimos en productos de alta calidad y experiencia de usuario de primera línea.

No hay mejor lugar para hacer esta pregunta que StackOverflow, agradecería cualquier comentario de los desarrolladores con experiencia en este tema.


Hay más de 500k aplicaciones en los mercados de aplicaciones y la competencia es feroz. Es primordial tener excelentes UX y gráficos.

Las herramientas multiplataforma NO están a la par con el desarrollo nativo. Si lo fueran, todos los estaríamos usando. Pero no lo somos Con una razón: NO tienes control total. Y el control total es necesario para tener aplicaciones de gran apariencia.

Si su aplicación no es una aplicación para el consumidor, sino una aplicación para empresas, cuyo uso es dictado por un departamento interno, entonces puede salir adelante con el diseño regular, porque el valor de dicha aplicación se encuentra en su funcionalidad.

Pero, si se toma en serio el mercado de aplicaciones móviles, entonces la única forma es convertirse en nativo. Y necesita un tipo UX y un diseñador (que sepa desarrollo móvil) en equipo a tiempo completo. Pasarás más del 50% del tiempo mirando. El proyecto del que soy parte ahora está gastando 80% + de tiempo en apariencia (gráficos, animaciones, UX, pruebas de usabilidad).

Una sugerencia: pase una cantidad razonable de tiempo (= días) usando las aplicaciones de su competencia. También pase tiempo con las mejores 50 aplicaciones en cada mercado. Te darás una idea de lo alto que es el compás. Luego, verifique las aplicaciones creadas con herramientas multiplataforma (puede encontrar enlaces en sus sitios) y compare.


Trabajo en AppMobi y voy a hacer algunos comentarios.

  1. Tu aplicación no debe ser rechazada por ser multiplataforma utilizando una vista web nativa. No hemos tenido Apple usar eso en ninguna aplicación enviada por AppMobi.

  2. Rhombile no es "Hecho por google". De hecho, ni siquiera es la parte de Motorola que Google compró, es su división de negocios. Están presionando hacia HTML5 / Javascript pero actualmente Ruby.

  3. Appcelerator comenzó a admitir una vista web y luego retrocedió. Acaban de recaudar una tonelada de dinero para volver al soporte de la vista web.

En cuanto a las personas que dicen "No" a las aplicaciones multiplataforma. Facebook y algunas otras compañías importantes se están moviendo hacia aplicaciones basadas en HTML5 para dispositivos móviles.


Si bien estoy totalmente de acuerdo con @Peter Knego, agregaría algunos puntos menores para los equipos que buscan apoyar a varias plataformas:

  • Como señala Peter, UX es enorme, y UX multiplataforma es el UX de denominador menos común. Es bastante difícil conseguir que todo este material sea todo lo que necesita sin atar una mano detrás de tu espalda. Las aplicaciones web realmente fantásticas se evalúan según su capacidad para acercarse a una experiencia nativa, y no al revés.

  • Hay muchas partes de un producto que no son UX. Vale la pena considerar cuidadosamente qué tipo de reutilización puede obtener allí. Por ejemplo, a menudo aconsejé a los equipos que tienen bases de datos SQL que ya trabajan en Android que no intenten utilizar Core Data en iPhone. No hay ninguna razón para reinventar su objeto y modelos de datos.

  • Esta no es una sugerencia general de que escriba su núcleo en C ++. Si tiene un núcleo de C ++ extenso y existente, he hecho sugerencias antes sobre cómo reutilizarlo. Pero generalmente no lo recomiendo para el nuevo código. En la mayoría de los casos, es mejor usar las mejores características de nivel de sistema operativo de la plataforma.

  • Diseñar protocolos de red que funcionen bien en todas las plataformas es bastante fácil y debe buscarse. Su mejor apuesta aquí en casi todos los casos es REST y JSON. Manténgalo simple, especialmente para iPhone que odia cosas como SOAP y analiza XML complejo.

  • Algunos problemas de diseño complicados son más fáciles en HTML + CSS que con controles nativos. Esto es particularmente cierto si tiene tablas complejas de varias columnas (especialmente cosas para las que necesitaría colspan y rowspan ). He tenido bastante suerte incrustando piezas individuales de UIWebView en aplicaciones que de otro modo serían nativas, incluso cuando la portabilidad no es para nada una consideración. Puede haber alguna reutilización que valga la pena aquí. Solo recuerde que no quiere perder mucho esfuerzo y rendimiento intentando que su navegador HTML sea neutral. En iPhone, use las extensiones de WebKit en cualquier lugar que mejore su aplicación para el usuario.

Una de las lecciones más importantes en esto, sin embargo, es que no hay una sola forma "correcta" de hacer una aplicación que sea apropiada para todas las plataformas. Las aplicaciones de iPhone deberían actuar como aplicaciones de iPhone. Las aplicaciones de Android deberían actuar como aplicaciones de Android.

Los enfoques altamente multiplataforma son una forma económica de obtener "algo" si realmente no te importa qué es "algo". Son una forma muy costosa de obtener algo grandioso.