Wie kann ich ein iPhone app vollständig in JavaScript zu schreiben, ohne es nur ein Web-App zu machen?

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich will nicht die Zeit nehmen, Obj-C zu lernen. Ich habe 7+ Jahre tun Web-Anwendungsprogrammierung ausgegeben. Sollte es nicht eine Möglichkeit, die WebView zu verwenden und einfach die ganze App in Javascript schreiben, die Dateien direkt von den Ressourcen des Projektes ziehen?

War es hilfreich?

Lösung

fand ich die Antwort nach der Suche um. Hier ist, was ich getan habe:

  1. ein neues Projekt in XCode erstellen. Ich glaube, ich verwenden, um die Ansicht-basierte Anwendung.

  2. Ziehen Sie ein WebView-Objekt auf Ihrer Schnittstelle und Größe ändern.

  3. Innerhalb Ihrer WebViewController.m (oder Datei ähnlich benannten, je nach dem Namen Ihrer Ansicht), in der viewDidLoad Methode:

    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. Jetzt alle Dateien, die Sie als Ressourcen für das Projekt sind für den Einsatz in Ihrem Web-App zur Verfügung hinzugefügt haben. Ich habe eine Datei index.html einschließlich JavaScript und CSS und Bilddateien ohne Probleme. Die einzige Einschränkung, die ich bisher gefunden habe ist, dass ich keine neue Ordner erstellen, so dass alle Dateien auf die Ordner Ressourcen verunstalten.

  5. Trick: Stellen Sie sicher, dass Sie die Datei als eine Ressource in XCode oder die Datei wird nicht zur Verfügung hinzugefügt haben. Ich habe eine leere Datei in XCode schon länger, dann meine Datei auf in dem Finder ziehen. Das wurde für mich zu arbeiten.

Hinweis: Ich weiß, dass Obj-C nicht so schwer sein muss zu lernen. Aber da habe ich schon diese App in JS bestehenden und ich weiß, es funktioniert in Safari ist dies eine viel schnellere dev Zyklus für mich. Eines Tages bin ich sicher, dass ich brechen müssen nach unten und lernen Obj-C.

Ein paar andere Ressourcen, die ich gefunden hilfreich:

Beim Obj-C von javascript: Aufruf Objective-c von Javascript

Der Aufruf javascript von Obj-C: iphone App-Entwicklung für Web-Hacker

Lesen von Dateien aus Anwendungspaket: UIWebView

Andere Tipps

Schauen Sie sich PhoneGap unter http://www.phonegap.com sie behaupten es Sie JavaScript einzubetten, HTML und CSS in ein native iPhone-App.

Für diejenigen, tun dies auf iPhone 2.1 (vielleicht 2.0), brauchen Sie nicht für lokale Datenspeicherung spezielle Dienste zu erstellen. Mobile erscheint die HTML5 / WHATWG SQL-Datenbank-API zu unterstützen. Dies ist die gleiche API von neueren Versionen von Desktop-Safari und Firefox unterstützt.

Wenn Sie ein Toolkit wie Dojo oder ExtJS verwenden, das eine Speicher Abstraktion bietet, sollte Ihr Code funktioniert auf fast jedem modernen Browser, einschließlich Mobile.

Um zu testen, öffnen Sie http://robertsanders.name/dev/stackoverflow/html5.html auf Ihrem iPhone.

Wenn Sie öffnen die Seite dann auf dem Dateisystem aussehen eines Jailbroken iPhone, sollten Sie eine Datenbank sehen irgendwo in / private / var / mobile / Library / WebKit / Datenbanken /. Es gibt sogar ein Verzeichnis von Web-DBs geöffnet es.

  

root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db   SQLite-Version 3.5.9 Enter ".help" für   Anweisungen

     

sqlite> .databases   seq Name Datei

     
     

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

     

sqlite> .tables

     

Datenbanken Origins

     

sqlite> select * from Datenbanken;

     

1 | http_robertsanders.name_0 | NoteTest | Datenbank | API Beispiel | 20000 | 0000000000000001.db

     

sqlite> select * from Origins;

     

http_robertsanders.name_0 | 5242880

Sie können eine Anwendung erstellen, ohne dass obj-C zu kennen. Der QuickConnectiPhone Rahmen ermöglicht es Ihnen, dies zu tun. Schauen Sie sich http://tetontech.wordpress.com wie es zu benutzen sowie andere Möglichkeiten zu tun, was Sie gebeten haben.

sollten Sie haben die nativen Wrapper in Objective C geschrieben Dieser Wrapper wirklich wenigen Zeilen Code enthalten können (wie 10) notwendig, um eine WebView zu erstellen und an die angegebene Adresse im Internet navigieren (wo Ihre Anwendung befindet). Aber in diesem Fall sollten Sie Ihre Anwendung sein, um eine voll funktionsfähigen Web-Anwendung (ich meine, verwenden Sie nicht nur die JavaScript, aber auch einige HTML für Markup).

Ich lief in das gleiche Problem. Ich habe bereits ein Spiel komplett in Javascript geschrieben. Ich würde gerne eine iPhone Version zu machen, aber Obj-C ist ein Overkill. Was ich am Ende war dabei die WebView mit einer speziellen URL der iphone app zeigen. Nachdem darüber nachzudenken, nehme ich mir nur diese Dateien in das Verzeichnis app bewegen konnte und sie lokal ausgeführt werden.

Es gibt nicht diese Art und Weise des mit dem aktuellen Apple-API zu tun. Ihre nächste Wette ist eine einfache native iPhone App zu schreiben, die den Webkit-Browser einbettet. Das können Sie Ihre xhtml / js Anwendung durchsuchen lokal.

Wenn Sie Daten speichern möchten, Sie werden es noch einen Schritt weiter müssen und verfügen über ein geringes Gewicht http-Server, der Server auf die App und Anrufe liefert Daten zu speichern und abzurufen. Wahrscheinlich nicht eine ideale Lösung für Sie, aber möglicherweise weniger Arbeit als ein voll Obj-C App.

Als Randbemerkung, Obj-C ist relativ einfach zu erlernen. Es gibt Unmengen von Beispielen im SDK. Die Gemeinschaft ist stark und wird auch ohne zu zögern stellt Fragen beantworten.

Blick auf den neuen O'Reilly-Buch über die Angelegenheit

Ich habe für eine Weile phonegap benutzen und es scheint, die besten Ergebnisse für mich zu haben. Ich werde meine Erfahrung in einer Woche oder so mit einem Link zu meiner App als auch schreiben.

Titanium Mobile- auch eine Option ist - ermöglicht es Ihnen, zu schreiben, JavaScript, das in Objective-C übersetzt wird.

Mindestens zwei andere erwähnt phonegap, aber ich dachte, dass ich das auch schreiben würde und erwähnen, dass Apple den phonegap Rahmen genehmigt hat. So, jetzt werden Sie nicht erhalten Sie Ihre App von Apple abgelehnt, nur weil Sie phonegap verwenden.

Blog-Post über phonegap und Apple - http: / /blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Phone Gap Startseite

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top