Come posso scrivere un'app per iPhone interamente in JavaScript senza renderla solo un'app Web?

StackOverflow https://stackoverflow.com/questions/64420

  •  09-06-2019
  •  | 
  •  

Domanda

Non voglio prendermi il tempo per imparare Obj-C.Ho trascorso più di 7 anni a programmare applicazioni web.Non dovrebbe esserci un modo per utilizzare WebView e scrivere semplicemente l'intera app in Javascript, estraendo i file direttamente dalle risorse del progetto?

È stato utile?

Soluzione

Ho trovato la risposta dopo aver cercato in giro.Ecco cosa ho fatto:

  1. Crea un nuovo progetto in XCode.Penso di aver utilizzato l'app basata sulla visualizzazione.

  2. Trascina un oggetto WebView sulla tua interfaccia e ridimensiona.

  3. All'interno del tuo WebViewController.m (o file con un nome simile, a seconda del nome della tua vista), nel metodo 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. Ora tutti i file che hai aggiunto come risorse al progetto sono disponibili per l'uso nella tua app Web.Ho un file index.html che include javascript, css e file di immagine senza problemi.L'unica limitazione che ho riscontrato finora è che non posso creare nuove cartelle, quindi tutti i file ingombrano la cartella delle risorse.

  5. Trucco:assicurati di aver aggiunto il file come risorsa in XCode altrimenti il ​​file non sarà disponibile.Ho aggiunto un file vuoto in XCode, quindi ho trascinato il file in alto nel Finder.Ha funzionato per me.

Nota:Mi rendo conto che Obj-C non deve essere così difficile da imparare.Ma poiché ho già questa app esistente in JS e so che funziona in Safari, questo è un ciclo di sviluppo molto più veloce per me.Un giorno sono sicuro che dovrò crollare e imparare Obj-C.

Alcune altre risorse che ho trovato utili:

Chiamare Obj-C da Javascript: chiamando object-c da javascript

Chiamare JavaScript da Obj-C: Sviluppo di app per iPhone per hacker web

Lettura di file dal bundle dell'applicazione: uiwebview

Altri suggerimenti

Dai un'occhiata a PhoneGap su http://www.phonegap.com sostengono che ti consente di incorporare JavaScript, HTML e CSS in un'app nativa per iPhone.

Per coloro che lo fanno su iPhone 2.1 (forse 2.0), NON è necessario creare alcun servizio speciale per l'archiviazione locale dei dati.MobileSafari sembra supportare l'API del database SQL HTML5/WHATWG.Questa è la stessa API supportata dalle versioni recenti di Safari desktop e Firefox.

Se stai utilizzando un toolkit come Dojo o ExtJS che offre un'astrazione di archiviazione, il tuo codice dovrebbe funzionare praticamente su qualsiasi browser moderno, incluso MobileSafari.

Per testare, aprire http://robertsanders.name/dev/stackoverflow/html5.html sul tuo iPhone.

Se apri quella pagina e poi guardi il filesystem di un iPhone jailbroken, dovresti vedere un database da qualche parte in /private/var/mobile/Library/WebKit/Databases/.C'è anche una directory di DB aperti sul web lì.

root# sqlite3 /private/var/mobile/library/webkit/database/databases.db version 3.5.9 Enter ".help" per istruzioni

sqlite> .database seq name file


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

sqlite> .tabelle

Origini dei database

sqlite> seleziona * dai database;

1|http_robertsanders.name_0|NoteTest|Database|Esempio API|20000|0000000000000001.db

sqlite> seleziona * da Origini;

http_robertsanders.name_0|5242880

Puoi creare un'applicazione senza conoscere alcun obj-C.Il framework QuickConnectiPhone ti consente di farlo.Guardare http://tetontech.wordpress.com per sapere come usarlo e altri modi per fare ciò che hai chiesto.

Dovresti avere il wrapper nativo scritto in Objective C.Questo wrapper potrebbe contenere davvero poche righe di codice (come 10) necessarie per creare un WebView e spostarlo verso l'indirizzo specificato in Internet (dove risiede la tua applicazione).Ma in questo caso la tua applicazione dovrebbe essere un'applicazione web completa (voglio dire, utilizzare non solo JavaScript, ma anche un po' di HTML per il markup).

Ho riscontrato questo stesso problema.Ho già un gioco scritto interamente in Javascript.Mi piacerebbe realizzare una versione compatibile con iPhone, ma Obj-C è eccessivo.Ciò che ho finito è stato utilizzare WebView per puntare a un URL speciale dell'app per iPhone.Dopo averci pensato, suppongo che potrei semplicemente spostare quei file nella directory dell'app ed eseguirli localmente.

Non c'è modo di farlo con le attuali API Apple.La soluzione più vicina è scrivere una semplice app nativa per iPhone che incorpori il browser webkit.Ciò ti consentirà di sfogliare la tua applicazione xhtml/js localmente.

Se desideri archiviare dati, dovrai fare un ulteriore passo avanti e includere un server http leggero che server la tua app e fornisca chiamate per archiviare e recuperare i dati.Probabilmente non è la soluzione ideale per te, ma forse richiede meno lavoro di un'app Obj-C completa.

Come nota a margine, Obj-C è abbastanza facile da imparare.Ci sono tantissimi esempi nell'SDK.La comunità è forte e risponderà alle domande ben poste senza esitazione.

guarda il nuovo o'reilly libro sulla questione

Uso PhoneGap da un po' e sembra che abbia i risultati migliori per me.Pubblicherò la mia esperienza tra circa una settimana con un collegamento anche alla mia app.

Cellulare in titanio è anche un'opzione: ti consente di scrivere JavaScript che viene tradotto in Objective-C.

Almeno altri 2 hanno menzionato phonegap, ma ho pensato di pubblicare anche questo e menzionare che Apple ha approvato il framework phonegap.Quindi, ora non riceverai la tua app rifiutata da Apple solo perché stai utilizzando phonegap.

Post del blog su phonegap e Apple - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Gap telefonico casa

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top