¿Por qué crear aplicaciones móviles nativas para iPhone y Android cuando existe la opción de crear aplicaciones móviles que se ejecutan en un navegador web? ¿Las aplicaciones móviles son más seguras?

Echemos un vistazo a las opciones, y por qué podría ser adecuado para usted ser nativo o híbrido o web.

  1. Native significa escribir código nativo de la plataforma, por lo que para iOS es Swift u Objective-C, y para Android es Java.
  2. Híbrido significa usar una solución de middleware que sirve como envoltorio nativo alrededor de un marco (a menudo) basado en tecnología web. Ejemplos: Apache Cordova, PhoneGap, Appcelerator.
  3. Web significa usar tecnología web pura, crear efectivamente un sitio web que de hecho es una aplicación web que se ejecuta en el navegador. Ejemplos: construido con AngularJS, React, etc. combinado con herramientas como jQuery Mobile y Famo.us.
  4. Los editores de aplicaciones, una cuarta categoría, es básicamente una plataforma SaaS en torno a una de las 3 categorías anteriores. Efectivamente, creando una aplicación con componentes prefabricados y exportándola a una aplicación binaria y / o web en ejecución. Ejemplos: App Machine, AppMakr.

Me centraré en las categorías 1 y 2 en mi respuesta, porque es el tema principal de la pregunta original. Las categorías 3 y 4 podrían cambiar la perspectiva de alguien que investiga qué plataforma usar.

Profesionales nativos
Las aplicaciones nativas generalmente funcionan mejor, porque tienen acceso directo al hardware y la memoria. Los componentes de la interfaz de usuario se representan en una forma nativa del sistema operativo, por lo que el procesamiento de gráficos es más rápido. Es posible el procesamiento en segundo plano, el uso de hardware como el acelerómetro y la interacción con productos externos como HealthKit, Bluetooth y redes de bajo nivel. Las aplicaciones nativas se pueden publicar en App Store / Google Play.

Contras nativos
Una desventaja de las aplicaciones nativas es que cualquier aplicación debe hacerse una vez para cada plataforma, duplicando o triplicando efectivamente el esfuerzo y el costo involucrados. Para equipos más grandes y aplicaciones complejas, la sobrecarga se crea al necesitar múltiples diseños para múltiples dispositivos y mediando entre estándares de IU que difieren de una plataforma a otra.

Pros híbridos
Las aplicaciones híbridas pueden funcionar bien, dependiendo de la plataforma utilizada. Muchas plataformas de middleware tienen buenas soluciones para escribir una vez, desplegar dos veces, independientemente del hardware. Se crean bibliotecas Wrapper, que proporcionan una interfaz no adecuada para funciones que funcionan de manera diferente en los múltiples sistemas operativos móviles. Plataformas como Cordova y PhoneGap tienen un muy buen soporte de todos los principales sistemas operativos de teléfonos. No hace falta decir que el uso de middleware disminuye el esfuerzo y el costo para crear una aplicación para múltiples plataformas.

Contras híbrido
Aún así, debido a que dependen del navegador web y especialmente de la representación de HTML basado en árboles, los gráficos son lentos y torpes. Hay menos memoria disponible y los objetos a menudo se representan de una manera que no es nativa de la plataforma, lo que genera una sobrecarga y una carga en el procesamiento. JavaScript, de uso frecuente, se evalúa e interpreta en una máquina virtual, creando una barrera entre el hardware y la aplicación. Además, las aplicaciones iOS en particular, deben usar las vistas web basadas en Safari y no pueden confiar en una representación más avanzada que se encuentra en Chrome, por ejemplo.

¿Lo mejor de ambos mundos?
Nunca tome una decisión de diseño o desarrollo solo en función del costo. Tal decisión seguramente te morderá en el trasero más adelante, porque no consideraste los otros factores que entran en juego. Por ejemplo: muchos desarrolladores que conozco, que trabajan con middleware, no tienen una comprensión básica de las plataformas separadas y su hardware. Se construyen sobre arena y, a menudo, se topan con excepciones insolubles que dependen de la plataforma, cosas que hacen que se dedique más tiempo a la creación de la plataforma de middleware, consumiendo el beneficio de costo inicial.

¿Cómo puede beneficiarse de una solución de middleware, incluso cuando es nativo?

Considere mover una parte de la lógica de su aplicación a su back-end, reduciendo efectivamente la funcionalidad que tiene cada aplicación individual.

Un ejemplo simple es el formato de fecha y hora, digamos para un artículo de noticias. No envíe marcas de tiempo del servidor a la aplicación, sino que envíe cadenas de fecha y hora bien formateadas. Esto reducirá la molestia de formatear la cadena en la aplicación, una vez para cada plataforma involucrada.

Otro ejemplo sería usar una vista web cuando sea posible. Tomemos por ejemplo la aplicación Quora. Podrían haber usado una vista web simple, en lugar de una vista nativa, para la “vista detallada de respuestas”. Esto les habría ahorrado tiempo creando una vista detallada de respuestas flexibles para cada plataforma separada. Para Quora, esto seguramente no hubiera funcionado, sus puntos de vista son simplemente demasiado complejos. Para una aplicación más simple, vale la pena explorar optimizaciones como estas.

Seguridad
La seguridad también era parte de la pregunta, así que profundicemos rápidamente en eso. En general, las aplicaciones nativas y / o híbridas no son más seguras entre sí.

Considere esto: una aplicación web es como un automóvil. La plataforma que usa es el motor del automóvil. Pero, está el conductor, la carretera por la que conduce (¿Internet?), Las señales de tráfico, el chasis, tal vez un pasajero.

En términos de seguridad, todos estos sistemas tienen inconvenientes e implicaciones importantes para la seguridad de su producto. El camino puede tener agujeros, su pasajero se vuelve loco, el conductor se desmaya y OOPS ahora le falta una rueda.

Un error común que veo que hacen los desarrolladores de aplicaciones es que piensan que su código se mantiene oculto para los extraños. Las cadenas, o claves secretas de API, son visibles cuando realiza ingeniería inversa de un binario de la aplicación, y a menudo son visibles en la red cuando no se utiliza SSL.

Por supuesto, el código nativo se compila y no se puede realizar una ingeniería inversa completa después de eso. Cadenas, nombres de métodos, a veces variables, pueden ser . Las aplicaciones híbridas usan HTML / JS / CSS que no está compilado, por lo que de hecho podría leer el código fuente original. Por lo general, este código se ofusca, eliminando nombres originales de variables y funciones y demás. Todo esto no introduce ninguna seguridad en su sistema: la seguridad por oscuridad no es segura.

La buena seguridad se basa en una comprensión intrincada de los sistemas utilizados, y en la confianza en aquellos que construyen sistemas para usted. No es necesario entender cómo funciona SSL, si confía en que está bien construido. Use la práctica común, como el uso de HTTPS, la salazón con HMAC y el cifrado de clave compartida.

Entonces, ya sea eligiendo una plataforma o asegurándose de que su producto sea seguro, asegúrese de estar informado y elija basándose en la perspectiva, no en una sola métrica.

Supongo que su próxima pregunta es: ¿dónde encuentro un buen desarrollador?

¡Buena suerte!

Reinder, LearnAppMaking.com

Es extraño para mí responder, ya que he estado promoviendo al menos un enfoque híbrido para el desarrollo de aplicaciones. El enfoque híbrido responde a muchos de los problemas, incluido el acceso a recursos nativos (por ejemplo, vibración, brújula, acelerómetro), algunos problemas de rendimiento y acceso / visibilidad desde la tienda principal del sistema operativo (Play, iTunes).

Además, las implementaciones de HTML están mejorando, y los navegadores son cada vez mejores en cuanto a estándares de soporte. Y los estándares son cada vez más útiles. Varias técnicas de almacenamiento local se pueden dar por sentado, al igual que la mayoría de CSS3.

¿Las razones para no ir con tecnología HTML?

1. ¿Crees que encontrar recursos móviles es difícil? Intenta encontrar buenos recursos web móviles.

2. Las implementaciones de HTML todavía no están allí. Nadie va a confundir una transición CSS3 con una animación nativa todavía.

3. Las tecnologías no están realmente orientadas a objetos, por lo que el código resultante no será tan fácil de mantener.

4. Estás más a gusto del navegador o de la implementación del navegador integrado que las API nativas. Las API nativas no tienden a cambiar mucho, pero su aplicación realmente podría estar en riesgo incluso con actualizaciones menores en el navegador en un sistema operativo específico.

5. Todavía hay algunos diseños potenciales que son difíciles o difíciles de manejar en HTML vs nativo.

Creo que si considera a largo plazo, debería considerar al menos un enfoque híbrido. Ahí es donde se dirigen las cosas. Pero todavía hay buenos argumentos en contra.

Seguridad en probablemente no el controlador principal. Veo un par de puntos a tener en cuenta:

  • Rendimiento, o mejor rendimiento percibido: las aplicaciones nativas son más rápidas que las páginas web. Incluso en los mejores escenarios. Los navegadores cubren una gama más amplia de gestos táctiles, por lo que, en ciertas situaciones, debe esperar un poco de tiempo para comprender realmente lo que está sucediendo: no puede realizar una acción que comienza con un solo toque si no ha esperado lo suficiente como para excluir que está en su lugar se va a tratar con un doble toque. Google está mejorando Chrome para eliminar el retraso cuando sea posible. Una buena lectura que explica que está aquí: Google elimina el retraso de toque artificial de 300 milisegundos en sitios optimizados para dispositivos móviles en Chrome 32 Beta
  • Integración con los dispositivos. Las aplicaciones se ubican en una posición privilegiada en comparación con las páginas web / aplicaciones web: se ubican un nivel más cerca de las capacidades de los teléfonos. Las aplicaciones que hablan con acelerómetros, Bluetooh, pueden encender la luz del flash de su teléfono, pueden verificar si hay conectividad wi-fi …y más. HTML5 está continuamente poniéndose al día con las aplicaciones nativas a este respecto, pero es un castigo de Sisyphus: hasta que se produzcan cambios significativos en el ecosistema móvil (por ejemplo, un gran éxito del sistema operativo Firefox), la página web estará limitada en las capacidades que pueden ofrecer.

El resultado es que, para obtener resultados profesionales, las empresas se apoyarán en aplicaciones móviles, aceptando los inconvenientes conocidos de duplicar la base del código para cubrir tanto Android como iOS, y de dependencia de App Markets.

Hay cuatro razones clave para elegir aplicaciones nativas:

  1. Actuación. Las aplicaciones nativas tienden a funcionar mejor. Las aplicaciones deben construirse correctamente en cualquier plataforma, pero si se construyen correctamente, las aplicaciones nativas funcionarán mejor porque hay menos pasos de interpretación y menos de ida y vuelta a un servidor.
  2. Características de la plataforma. Por ejemplo, acceder a la cámara, el calendario, el micrófono, los sensores de movimiento, el bluetooth, etc. Algunos de estos están disponibles para aplicaciones web, pero generalmente es un subconjunto de todo el conjunto de la plataforma. Esto puede incluir características de la plataforma como GameCenter, PassBook y otras.
  3. Datos de plataforma. Las aplicaciones nativas pueden obtener acceso a contactos, calendario, fotos y otros datos de la plataforma de una manera que a menudo no está disponible para las aplicaciones web.
  4. Interfaz de usuario nativa. Las aplicaciones nativas tienen acceso a botones, controles, pestañas, controles deslizantes, cuadros de diálogo modales y otros controles nativos que permiten a los desarrolladores de aplicaciones tener una interfaz de usuario más consistente. Las aplicaciones creadas de forma nativa a menudo “se sienten” mejor y más naturales.

Estas ventajas son la razón principal por la que está viendo tantas aplicaciones nativas en desarrollo. Dicho esto, hay algunas ventajas clave para las aplicaciones web.
1. Sin instalación. Solo carga una página.
2. Plataforma cruzada. Muchas cosas funcionan bien en todos los navegadores.

Debido a estas ventajas, muchas compañías optan por hacer aplicaciones web y nativas, sin embargo, existen razones para crear una aplicación web o simplemente crear una aplicación nativa.

Las personas a menudo aprovechan HTML cuando arrancan el desarrollo móvil. Algunas aplicaciones simplemente lanzan un marco HTML y abren la aplicación / página web. Esta es una técnica muy efectiva para comenzar rápidamente con una idea, aunque tiene algunas limitaciones clave.

Como Peter mencionó, hay muchos beneficios para desarrollar una aplicación nativa (código / aplicación escrita específicamente para una plataforma, como iOS o Android). Además del control sobre el dispositivo en sí (como su cámara, luces y otros componentes), la principal diferenciación entre la página web y la aplicación nativa es la experiencia y el rendimiento del usuario. Con dos aplicaciones una al lado de la otra, una nativa y una HTML, no hay duda de cuál es cuál. Siendo cuán grande es el móvil, la experiencia del usuario móvil es muy importante y sus usuarios la juzgan de manera crítica y brutal, ya sea que su primo tome esta decisión o no. Por esta razón, es importante crear una aplicación nativa fluida y fluida. Sin embargo, volviendo a mi primera afirmación, la creación de una aplicación basada en navegador es hacer llegar su idea / servicio de manera eficiente y efectiva para obtener comentarios de los clientes. Sería vital volver a direccionar el navegador frente a la aplicación nativa en una iteración siguiente.

Un par de años, YouTube y Facebook se han esforzado mucho en HTML5, pero ahora ambos tratan más de mejorar las aplicaciones nativas. Las aplicaciones nativas son más fáciles de actualizar y pueden proporcionar una experiencia consistente para los usuarios. También estoy de acuerdo con un mejor rendimiento e interfaz de usuario. Aunque las aplicaciones nativas son obviamente más caras y requieren más tiempo para iniciarse

Los problemas de seguridad probablemente no son una consideración principal al decidir si desarrollar aplicaciones nativas o aplicaciones web.

Estoy de acuerdo con las respuestas anteriores que también deben tener en cuenta: rendimiento, UI y UX, integración, características y más.

Además, como probablemente sepa, ha habido mucho debate y discusión en el espacio móvil con respecto a qué empresas de carretera que buscan mudarse a dispositivos móviles deberían aventurarse, Responsive / Web o Native.
Las empresas, principalmente debido a limitaciones de desarrollo, deben decidir qué es lo mejor para ellas.

A mi modo de ver, no se reduce a elegir uno sobre el otro. Se trata de echar un vistazo a quién es su audiencia y estudiar el análisis de la experiencia del cliente. ¿Qué dispositivos están usando? En el área del comercio móvil (AKA mcommerce), los minoristas, por ejemplo, tienen muchos usuarios de iPhone. Solo mirar el hecho de que la mitad de sus usuarios provienen de su aplicación nativa donde la tasa de conversión es 30% más alta es una razón suficiente para permanecer nativo. Sin embargo, si el mismo minorista ve que muchos visitantes provienen de moras, pueden invertir más energía en optimizar la experiencia del usuario para el navegador blackberry.

Puede leer más al respecto en nuestra publicación de blog:
Diseño receptivo o aplicación nativa. ¿Qué es lo mejor para ti? – Appsee

Lea algunas de las respuestas y pensé que agregaría algunos comentarios.
1. Las aplicaciones web serán perfectamente adecuadas para muchos casos de uso hoy en día e incluso preferidas. Sin embargo, hay ciertos inhibidores que tienden a empujar a algunas compañías nativas. Esto mejorará a medida que las herramientas de desarrollo html5 y js se pongan al día con los dispositivos móviles.
2. El rendimiento y la velocidad son más fáciles de lograr en las aplicaciones nativas, pero probablemente con suficiente ajuste fino de js y una configuración de backend ágil aún puede superar esto en las aplicaciones web.
3. En mi experiencia como primer ministro, uno de los mayores problemas con las aplicaciones web que noté fue simplemente la debilidad de las herramientas js para depurar problemas. Esto hizo que el desarrollo fuera difícil y lento. Esto sin duda mejorará con el tiempo.

Las aplicaciones web son el futuro, pero la madurez aún no existe (de nuevo, según lo exigentes que sean su caso de uso y su hoja de ruta).

Tuvimos la misma pregunta cuando creamos la primera versión mínima viable de nuestro producto. Utilizamos PhoneGap (un enfoque híbrido) y ciertamente fue un gran primer paso para pasar de la idea al producto. Poco después de nuestro primer conjunto de comentarios de los usuarios, se trataron los siguientes problemas:
– Rendimiento: algunas de las páginas, especialmente las vistas de tabla, no funcionaban bien. Algunas transiciones fueron extravagantes.
– UI / UX: la aplicación simplemente no se sentía nativa y resbaladiza.

Desde la perspectiva del desarrollo, hubo momentos en los que dependíamos mucho de los complementos de phonegap más de lo que queríamos. Algunas de las funcionalidades básicas en las aplicaciones nativas, como las notificaciones push, no eran tan triviales en el enfoque híbrido.

Una razón para crear una aplicación nativa, aunque también considero que las aplicaciones híbridas son nativas (debido a la forma en que se hizo la pregunta), es que las tiendas de aplicaciones como Google Play Store o Apple App Store atienden a la distribución. Mientras tanto, esas tiendas son una forma estándar de facto para que los clientes móviles busquen nuevas funciones para sus teléfonos, si no hay una, la distribución se quedará atrás de lo que podría ser. Ya se mencionó en una de las respuestas, pero está bastante oculto entre otras razones mucho más importantes, ¡aunque creo que esta también es una razón muy importante!

Es posible que desee editar su pregunta siguiendo las líneas de “¿Por qué crear aplicaciones nativas o de navegador para móviles?”. Me llevó leer tu pregunta dos veces antes de entender lo que estabas preguntando.

Pocos motivos desde el principio: velocidad, integración de plataforma (es decir, si desea que el teléfono haga algo), ahorre ancho de banda de red.

¿Responde esto a tu pregunta?

Porque Native es mejor de varias maneras:

1) Mejor acceso a los recursos del sistema. Mejor mecanismo de caché. Rendimiento más rápido

2) Interfaz de usuario de la aplicación optimizada: Native lo hace mejor.

La seguridad generalmente no es un problema.

porque no puede 🙂 Las aplicaciones creadas en HTML5 son extremadamente limitadas en rendimiento, características, etc.

HTML 5. Esa fue la razón por la cual los trabajos cayeron flash