¿Cómo puedo escribir una aplicación de iPhone completamente en JavaScript sin que sea solo una aplicación web?

No quiero tomarme el time para aprender Obj-C. He pasado más de 7 años haciendo progtwigción de aplicaciones web. ¿No debería haber una forma de usar WebView y simplemente escribir toda la aplicación en javascript, sacando los files directamente de los resources del proyecto?

Encontré la respuesta después de search. Esto es lo que he hecho:

  1. Cree un nuevo proyecto en XCode. Creo que utilicé la aplicación basada en la vista.

  2. Arrastre un object WebView a su interfaz y networkingimensione.

  3. Dentro de su WebViewController.m (o un file con nombre similar, según el nombre de su vista), en el método viewDidLoad:

      NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" ofType: @ "html"];  
     NSData * htmlData = [NSData dataWithContentsOfFile: filePath];  
     if (htmlData) {  
       NSBundle * bundle = [NSBundle mainBundle]; 
       NSString * path = [bundle bundlePath];
       NSString * fullPath = [NSBundle pathForResource: @ "index" ofType: @ "html" inDirectory: path];
       [webView loadRequest: [NSURLRequest requestWithURL: [NSURL fileURLWithPath: fullPath]]];
     } 
  4. Ahora, todos los files que ha agregado como resources para el proyecto están disponibles para su uso en su aplicación web. Tengo un file index.html que incluye JavaScript y CSS y files de image sin problemas. La única limitación que he encontrado hasta ahora es que no puedo crear nuevas carpetas para que todos los files desorderen la carpeta de resources.

  5. Truco: asegúrate de haber agregado el file como recurso en XCode o el file no estará disponible. He estado agregando un file vacío en XCode, luego arrastrando mi file en la parte superior del buscador. Eso ha estado funcionando para mí.

Nota: me doy count de que Obj-C no debe ser tan difícil de aprender. Pero como ya tengo esta aplicación en JS y sé que funciona en Safari, este es un ciclo de desarrollo mucho más rápido para mí. Algún día estoy seguro de que tendré que romper y aprender Obj-C.

Algunos otros resources que encontré útiles:

Llamar a Obj-C desde javascript: llamar a objective-c desde javascript

Llamada a javascript desde Obj-C: desarrollo de aplicaciones iphone para hackers web

Lectura de files del package de aplicaciones: uiwebview

Echa un vistazo a PhoneGap en http://www.phonegap.com. Dicen que te permite insert JavaScript, HTML y CSS en una aplicación de iPhone nativa.

Para aquellos que hacen esto en iPhone 2.1 (quizás 2.0), NO es necesario que cree ningún service especial para el almacenamiento de datos local. MobileSafari parece ser compatible con la API de database SQL HTML5 / WHATWG. Esta es la misma API admitida por las versiones recientes de Safari y Firefox de escritorio.

Si está utilizando un set de herramientas como Dojo o ExtJS que ofrece una abstracción de almacenamiento, su código debería funcionar en casi cualquier browser moderno, incluido MobileSafari.

Para probar, abra http://robertsanders.name/dev/stackoverflow/html5.html en su iPhone.

Si abre esa página y luego mira el sistema de files de un iPhone Jailbroken, debería ver una database en algún lugar en / private / var / mobile / Library / WebKit / Databases /. Incluso hay un directory de DBs abiertos en la web allí.

root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite versión 3.5.9 Introduzca ".help" para get instrucciones.

sqlite> .databases seq file name


0 principal /private/var/mobile/Library/WebKit/Databases/Databases.db

sqlite> .tables

Orígenes de bases de datos

sqlite> select * de bases de datos;

1 | http_robertsanders.name_0 | NoteTest | Base de datos | Ejemplo de API | 20000 | 0000000000000001.db

sqlite> select * de Orígenes;

http_robertsanders.name_0 | 5242880

Puede crear una aplicación sin conocer obj-C. El marco QuickConnectiPhone le permite hacer esto. Echa un vistazo a http://tetontech.wordpress.com para saber cómo usarlo, así como otras forms de hacer lo que le pediste.

Debería tener el contenedor nativo escrito en el Objetivo C. Este contenedor podría contener realmente pocas líneas de código (como, 10) necesarias para crear un WebView y navegarlo a la dirección dada en Internet (donde reside su aplicación). Pero en este caso, su aplicación debería ser una aplicación web con todas las funciones (es decir, use no solo el JavaScript, sino también algunos HTML para el marcado).

Me encontré con el mismo problema. Ya tengo un juego escrito en su totalidad en Javascript. Me encantaría hacer una versión amigable para iPhone, pero Obj-C es una exageración. Lo que terminé haciendo fue usar WebView para apuntar a una url especial de la aplicación iphone. Después de pensarlo, supongo que podría mover esos files al directory de la aplicación y ejecutarlos localmente.

No hay manera de hacer esto con las actuales API de Apple. Su apuesta más cercana es escribir una aplicación de iPhone nativa simple que incrusta el browser webkit. Eso te permitirá navegar tu aplicación xhtml / js localmente.

Si desea almacenar datos, deberá dar un paso más e include un server http ligero que sirva de server a su aplicación y proporcione llamadas para almacenar y recuperar datos. Probablemente no sea una solución ideal para ti, pero posiblemente less trabajo que una aplicación Obj-C completa.

Como nota al margen, Obj-C es bastante fácil de aprender. Hay muchos ejemplos en el SDK. La comunidad es fuerte y responderá bien a las preguntas sin dudarlo.

mira el nuevo libro de O'Reilly sobre el asunto

He estado usando phonegap por un time y parece tener los mejores resultados para mí. Publicaré mi experiencia en una semana más o less con un enlace a mi aplicación también.

Titanium Mobile también es una opción: le permite escribir JavaScript que se traduce a Objective-C.

Al less 2 personas más mencionaron el directory telefónico, pero pensé que también publicaría esto y mencionaría que Apple aprobó el marco telefónico. Entonces, ahora Apple no rechazará tu aplicación solo porque estás usando phonegap.

Publicación de blog sobre phonegap y Apple – http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Teléfono de inicio de Gap