it-swarm-es.com

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

No quiero tomarme el tiempo para aprender Obj-C. He pasado más de 7 años haciendo programación de aplicaciones web. ¿No debería haber una manera de usar la vista web y simplemente escribir la aplicación completa en javascript, sacando los archivos directamente de los recursos del proyecto?

84
Jeff

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

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

  2. Arrastre un objeto WebView a su interfaz y redimensione.

  3. Dentro de su WebViewController.m (o archivo 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, cualquier archivo que haya agregado como recursos al proyecto estará disponible para su uso en su aplicación web. Tengo un archivo index.html que incluye javascript y css y archivos de imagen sin problemas. La única limitación que he encontrado hasta ahora es que no puedo crear nuevas carpetas, por lo que todos los archivos abarrotan la carpeta de recursos.

  5. Truco: asegúrese de haber agregado el archivo como un recurso en XCode o el archivo no estará disponible. He estado agregando un archivo vacío en XCode, luego arrastré mi archivo a la parte superior en el Finder. Eso ha estado trabajando para mí.

Nota: Me doy cuenta 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 descomponerme y aprender Obj-C.

Algunos otros recursos me parecieron útiles:

Llamando a Obj-C desde javascript: llamando a objecto-c desde javascript

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

Leyendo archivos del paquete de aplicaciones: iwebview

71
Jeff

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

22
Chris Samuels

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

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

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

Si abre esa página, busque en el sistema de archivos de un iPhone con Jailbroken, debería ver una base de datos en algún lugar en/private/var/mobile/Library/WebKit/Databases /. Incluso hay un directorio de bases de datos abiertas en la web allí.

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

sqlite> .databases seq nombre de archivo


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

sqlite> .tables

Orígenes de bases de datos

sqlite> select * from Databases;

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

sqlite> select * from Origins;

http_robertsanders.name_0 | 5242880

7
Robert Sanders

Puedes crear una aplicación sin conocer ningún 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 formas de hacer lo que has pedido.

4
Lee

mira el nuevo o'reilly libro al respecto

2
cris

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

2
Sergey Mikhanov

Me encontré con este mismo problema. Ya tengo un juego escrito enteramente en Javascript. Me encantaría hacer una versión para iPhone, pero Obj-C es una exageración. Lo que terminé haciendo fue usar la vista web para apuntar a una URL especial de la aplicación de iPhone. Después de pensarlo, supongo que podría mover esos archivos al directorio de la aplicación y ejecutarlos localmente.

2
dawnerd

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

Si desea almacenar datos, deberá ir un paso más allá e incluir un servidor http ligero que sirva de servidor a su aplicación y proporcione llamadas para almacenar y recuperar datos. Probablemente no sea una solución ideal para usted, pero posiblemente tenga menos trabajo que una aplicación completa de Obj-C.

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

2
jsapara

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

1
shawn

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

1
Josh Brown

Al menos otros 2 mencionaron phonegap, pero pensé que también publicaría esto y menciono que Apple ha aprobado el marco de phonegap. Entonces, ahora Apple no rechazará su aplicación solo porque está usando phonegap.

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

Phone Gap Home

0
Neo42