2008-09-15 8 views

Respuesta

71

Encontré la respuesta después de buscar. 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 objeto WebView a su interfaz y cambie el tamaño.

  3. interior de su WebViewController.m (o similarmente archivo llamado, en función del nombre de la 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 archivos que haya añadido todos los recursos para el proyecto están disponibles para su uso en su aplicación web. Tengo un archivo index.html que incluye javascript, css y archivos de imagen sin problemas. La única limitación que he encontrado hasta ahora es que no puedo crear nuevas carpetas para que todos los archivos llenen la carpeta de recursos.

  5. Truco: asegúrese de haber agregado el archivo como recurso en XCode o de que el archivo no estará disponible. He estado agregando un archivo vacío en XCode, luego arrastrando mi archivo arriba en el buscador. Eso ha estado funcionando 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 romper y aprender Obj-C.

Algunos otros recursos que encontraron útiles:

Calling Obj-C de javascript: calling objective-c from javascript

Calling Javascript a partir de Obj-C: iphone app development for web hackers

la lectura de archivos de paquete de aplicaciones: uiwebview

+0

Curiosamente, este fin de semana solo estaba mirando el código de GitX (aplicación MacOS estándar) y creo que esto también es lo que hacen. http://wiki.github.com/pieter/gitx –

+1

Para el problema del desorden, intente agregar un directorio a su proyecto xcode y seleccione "Crear referencias de carpeta ..." en lugar de "Crear grupos recursivamente ...". –

+1

+1. Y estoy bastante seguro de que podrías usar la misma técnica para hacer una aplicación de teléfono Android. Y, presumiblemente, los otros teléfonos inteligentes evolucionarán sus navegadores para admitir Javascript y luego usted también los podrá respaldar. El HTML/CSS/JavaScript multiplataforma es la forma del siglo XXI. ¿Seguramente el código nativo específico de plataforma gnarly pasó de moda hace mucho tiempo? – MarkJ

2

Debe tener el contenedor nativo escrito en Objective C. Este contenedor podría contener muy pocas líneas de código (como, 10) necesarias para crear una WebView y navegar a 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, no solo use el JavaScript, sino también algo de HTML para el marcado).

2

Me encontré con este mismo problema. Ya tengo un juego escrito completamente 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 archivos al directorio de la aplicación y ejecutarlos localmente.

2

No hay forma de hacer esto con las API actuales de apple. Su apuesta más cercana es escribir una aplicación nativa simple para iPhone que incorpore el navegador webkit. Eso le permitirá navegar por su aplicación xhtml/js localmente.

Si desea almacenar datos, tendrá que ir un paso más allá e incluir un servidor http ligero que servidores de su aplicación y proporciona llamadas para almacenar y recuperar datos. Probablemente no sea una solución ideal para usted, pero posiblemente menos 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, haga preguntas sin dudarlo.

+0

Puede usar el almacenamiento local a través de la API de almacenamiento SQL WHATWG/HTML5 para JavaScript. Ver mi respuesta para más información. –

7
para aquellos

hacer esto en el iPhone 2.1 (tal vez 2.0), que no es necesario para crear servicios especiales 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 conjunto de herramientas como Dojo o ExtJS que ofrece una abstracción de almacenamiento, su código debería funcionar en casi cualquier navegador moderno, incluyendo MobileSafari.

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

Si abre esa página y luego observa el sistema de archivos de un iPhone con Jailbreak, debería ver una base de datos en/private/var/mobile/Library/WebKit/Databases /. Incluso hay un directorio de bases de datos abiertas aquí.

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

sqlite> .databases nombre SEC presentar


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

sqlite> .tables

Bases de datos Orígenes

sqlite> SELECT * FROM bases de datos;

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

sqlite> SELECT * FROM Orígenes;

http_robertsanders.name_0 | 5242880

22

Salida PhoneGap en http://www.phonegap.com Afirman que permite incrustar JavaScript, HTML y CSS en una aplicación nativa para el iPhone.

4

Puede crear una aplicación sin conocer ningún obj-C. El marco QuickConnectiPhone te permite hacer esto. Salida http://tetontech.wordpress.com de cómo usarlo, así como otras formas de hacer lo que han pedido.

1

He estado usando PhoneGap por un tiempo y que parece tener los mejores resultados para mí. Voy a publicar mi experiencia en una semana o así con un enlace a mi aplicación también.

+0

ahora aprobado por apple http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/ – Neo42

1

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

+0

¿Realmente se traduce en Objective-C? Creo que se ejecuta en un componente de navegador web como PhoneGap. – Jonas

Cuestiones relacionadas