Hacer una aplicación mobile desde un website existente.

Ya desarrollé un website totalmente funcional, y nuestro equipo está buscando exportar este sitio a una aplicación de iPhone (y, finalmente, a otras plataforms). El mejor ejemplo que puedo dar es que básicamente hice Facebook, ahora quiero hacer la aplicación de Facebook (la que se lanza desde la pantalla de inicio de un iPhone, no desde el browser). Entonces, obviamente, ya tenemos la funcionalidad, y solo necesitamos convertirla a otra plataforma. ¿Qué tan difícil es esto? ¿Tendremos que hacer una pieza de software completamente nueva y básicamente ignorar todo el código PHP existente que ya tenemos? La aplicación básicamente va a ser la misma que el website, a exception de algunos cambios de layout. Es posible que deseemos que sea capaz de acceder a la function de la camera y, definitivamente, pueda upload una image, que creo que descartaría una aplicación mobile. Todavía no entiendo la delimitación entre hacer una aplicación mobile y una aplicación que se inicia desde la pantalla de inicio de un iPhone. ¿Tienen alguna sugerencia sobre dónde comenzar y cuán difícil será todo esto? Si podemos get la funcionalidad que queremos y facilitar nuestra utilización del código existente, estaríamos encantados.

Gracias

Empecemos con lo básico.

Un sitio mobile es un website al que se accede a través del browser web del teléfono. Las páginas HTML se sirven desde un server web (y la interfaz de usuario está optimizada para el layout del teléfono).

Una aplicación nativa (a menudo denominada "aplicación") es esencialmente una aplicación ejecutable que se descarga al teléfono. Para iPhone, estas están escritas en Objective-C. Para Android están escritos en Java. Para Windows Mobile están escritos en C #, etc.

Estas son las malas noticias que enfrenta:

-Para que su aplicación se inicie desde la "pantalla de inicio" del iPhone, debe comstackrse usando el Objetivo C. Lo mismo con Android / Java.

-Para poder acceder a la camera, debe comstackrse usando el Objetivo C (o Java para Android).

Estas son algunas buenas noticias para ti:

-Usted puede escribir fácilmente su aplicación nativa para ser un interfaz de usuario puramente interfaz de usuario y llamar a su código de server existente utilizando un model de API REST para la lógica de negocio. Solo tiene que exponer la funcionalidad que necesita para exponer a la aplicación. Así que esa es una manera de reutilizar la base de código existente y simplificar la aplicación. Hay buenos frameworks de Objective C como RESTKit que hacen esto bastante fácil.

-Puedes hacer que tu aplicación sea realmente cursi y, básicamente, convertirla en un browser web para tu sitio, pero Apple puede no aprobarlo si no lo personalizas para iPhone. Y será una experiencia deficiente para los usuarios de iPhone que esperan que una aplicación funcione como una aplicación. No recomendaría esto.

-Si planeas lanzar en varias plataforms, o realmente no quieres tener que mantener un proyecto Objective C (y un proyecto Java en el futuro), puedes usar algo como PhoneGap, Appcelerator Titanium o Sencha Touch. Estos son envoltorios que tomarán una aplicación escrita en tecnologías web (HTML 5) y los comstackrán en aplicaciones nativas. Estas aplicaciones HTML 5 pueden acceder a la camera, etc. Sus desarrolladores existentes no tienen que aprender Objective-C y pueden usar sus habilidades HTML / JavaScript que ya tienen. Hay muchas ventajas de estas tecnologías. La desventaja es que su aplicación no se verá / parecerá tan buena como una aplicación nativa o utilizará cualquiera de las características "geniales" del teléfono. Funcionará como un buen website mobile. Si tiene buena interfaz de usuario / personas de layout, puede crear algo bastante bueno con estas tecnologías web. Pero si solo buscas emular un website en una aplicación nativa (y no crear el próximo juego asesino), entonces probablemente sea tu mejor apuesta por una serie de razones.

Si google app nativa versus phonegap (o sencha touch) hay mucha información sobre los pros y los contras. Probablemente sea un buen lugar para que empieces a aprender.

Además de la buena respuesta de @Joel, primero debe comprender qué tipo de características debe ofrecer al usuario, si la function principal solo puede ver el website utilizando UIWebView solo para poder distribuir la aplicación en la tienda , ya que @ Teofilo dijo que no está permitido . Actualmente existen diferentes soluciones para desarrollar aplicaciones multiplataforma (es decir, PhoneGap ), que le permiten desarrollar aplicaciones para diferentes plataforms utilizando tecnologías como html5, ajax, etc. a través de UIWebViews.
Depende del tipo de funcionalidad que desee ofrecer al usuario, el performance será sin duda mejor en caso de desarrollo nativo, porque tiene más control sobre la aplicación y el dispositivo, pero puede ser conveniente usar una cruz -platform solution si las características compartidas son fáciles de implementar, para get el mismo resultado en diferentes plataforms. Tampoco importa tanto qué tipo de tecnología use en la parte de atrás, lo importante es utilizar formattings / protocolo estándar para la comunicación (es decir, http / json). Este es solo mi punto de vista, espero que alguien pueda dar su perspectiva sobre este tema, porque noté que es muy recurrente hoy.
Sin embargo, buena pregunta.

Consulte la cláusula 2.12 de la guía de revisión de App Store

https://developer.apple.com/appstore/resources/approval/guidelines.html#functionality

… Las aplicaciones que son simplemente sitios web agrupados como aplicaciones … pueden ser rechazadas

Depende. Esencialmente, puede usar UIWebViews y una hoja de styles personalizada para que la aplicación sea un portal al website, lo que creo que hace la aplicación de Facebook. No funcionará tan bien como una aplicación verdaderamente nativa, pero puede servir bien a sus propósitos con less mantenimiento.