In der neuesten Antwort von @Mitja Bezenšek finden Sie die aktuellste unterstützte Möglichkeit, dies mit der neuesten Version von Meteor (0.9.3) zu tun.
Norman H
Antworten:
39
Ja, dies ist möglich, aber nicht durch Packen der Meteor-App auf dem Telefon. Sie müssen stattdessen Phonegap auf Ihren Meteor-Server richten (Sie können die API weiterhin für den Zugriff auf Funktionen auf dem Gerät verwenden). Hier sind die Anweisungen:
Holen Sie sich die neueste Version von Phonegap 2.2. * Von https://github.com/phonegap/phonegap (2.1 hat einen Fehler, der verhindert, dass diese Technik funktioniert).
Suchen und öffnen Sie unter iOS CordovaLib / Classes / CDVViewController.m und überschreiben Sie in Zeile 175 appURL mit appURL = [NSURL URLWithString: @ "http://your-server.com"];
Das ist es. Kompilieren Sie die App und führen Sie sie aus.
Ein paar Zeitersparnisse:
Sie können mit dem Einrichten Ihres Meteor-Verzeichnisses beginnen, indem Sie den Inhalt des WWW / Verzeichnisses in Ihr Meteor-Server-Stammverzeichnis kopieren. Stellen Sie sicher, dass Sie die Javascript-Dateien unter das Verzeichnis client / kopieren, damit sie vor der Hauptdatei von meteor js geladen werden.
Führen Sie app.initialize (Fenster) aus Ihrer Haupt-Meteor-JS-Datei aus. Wenn der Fensterparameter nicht übergeben wird, stürzt die App ab.
Versuchen Sie nicht, den Meteorserver im Verzeichnis www / in Xcode einzurichten. Sie können keine Bereitstellung auf einem Gerät durchführen, da das Unterverzeichnis .meteor symbolische Links zu Ihren Knotenmodulen enthält.
Vielen Dank! Aber ich habe den ViewController nicht geändert. Ich habe gerade die in geändert config.xml, <content src="http://127.0.0.1:3000/" />da dies die Eigenschaft ist, die im ViewController standardmäßig auf appURL gesetzt wird.
Nun, ich denke, der beste Ausgangspunkt ist herauszufinden, wie weit Sie gehen wollen / müssen.
Würdest du wollen
Eine Meteor.js PhoneGap-App, die irgendwo eine Verbindung zu einem Server herstellt? Dann möchten Sie wahrscheinlich die Meteor-Klassen in einem PhoneGap-Projekt verwenden und mit Meteor.connect (url) eine Verbindung zu Ihrem Server herstellen.
Persistenz von Offline-App-Daten - Das wird schwierig ... Dafür wurde Meteor nicht entwickelt, obwohl es sicherlich Möglichkeiten gibt, dies
zu erreichen. Ich erinnere mich an Diskussionen von Backbone-, Spine- und
anderen clientseitigen JS-Frameworks. Es ist einfach, lokalen Speicher zu verwenden, aber der eigentliche Aufwand beginnt dort, wenn Sie Daten zwischen lokalem und dem Server synchronisieren möchten.
Ich habe bis zu einem gewissen Grad grob gearbeitet und hier den Prozess, dem ich gefolgt bin:
Nehmen Sie ein Beispiel
Erstellen Sie ein Aufgabenpaket mit meteor bundle ../todos.tgz
Bundle extrahieren Öffnen Sie das extrahierte Bundle in Ihrem Editor
Öffnen Sie die .js-Datei im Ordner static_cacheable / und formatieren Sie sie. Ersetzen Sie den Ajax-Aufruf aus der Anforderung "file: //" durch die tatsächliche Hostanforderung.
Ich habe dies in Zeile 1766 getan, mit der der Ajax-Handler erstellt wird
u.protoype._start = function(a, d, e, f){
d = d.replace("file://localhost","http://localhost:3000");
...
}
Öffnen Sie anschließend die Datei app.html im Browser und stellen Sie sicher, dass der Server bereits ausgeführt wird. Auf diese Weise würde der Großteil der Anwendung funktionieren.
Dies ist jedoch nicht die Art und Weise, wie Sie es in Ihrer realen Anwendung verwenden möchten. Mit weiteren Änderungen ist es jedoch möglich, die Clientseite in Phonegap zu verwenden, wenn der Server an einem anderen Ort ausgeführt wird.
Bearbeiten
Meteor hat eine Methode zum Verbinden , um eine Verbindung zu einer anderen Meteor-Anwendung herzustellen, die den obigen Aufruf zum Ersetzen der URL möglicherweise auflöst, obwohl ich das noch nicht ausprobiert habe.
Ich sehe keine "file: //" - Zeichenfolgen in meiner static_cacheable / *. Js-Datei. Ich habe versucht, die CSS- und Skriptzeilen in app.html zu bearbeiten, um die vollständig qualifizierte Server-URL (' myapp.meteor.com/xxxx.js ' anstelle von '/.xxxx.js') zu verwenden, aber das führt nur zu einem weißen Bildschirm in der Phone Gap App. Phone Gap stellt app.html lokal bereit. Wie kann ich das js so ändern, dass es auf meinen Server verweist?
mb.
Sie werden es nicht direkt finden, es kommt als Parameter für die _start()Methode. Überprüfen Sie die _start()Methodendefinition, mit der das XHR-Objekt erstellt wird, und ersetzen Sie den URL-Parameter durch Ihre Zieldomäne.
Willkommen bei Stack Overflow! Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Beachten Sie auch , dass Sie jedes Mal, wenn Sie auf Ihre eigene Website / Ihr eigenes Produkt verlinken, einen Haftungsausschluss veröffentlichen müssen.
Andrew Barber
2
Dieser Blogpost scheint veraltet zu sein, da sich Meteor im raschen Wandel befindet. Die im Beitrag erwähnte Datei existiert nicht in meinem Projekt
Micha Roon
2
Hier ist eine Live-Demo auf phonegap + meteorjs + oauth2.
Ich habe diese App mit Meteor auf Google Play erstellt. https://play.google.com/store/apps/details?id=com.youiest.tapmatrix&hl=de
Es handelt sich um eine private Arbeit, daher konnte der Quellcode nicht veröffentlicht werden.
Bitte zögern Sie nicht, Fragen dazu zu stellen.
Es gibt mehrere Möglichkeiten, wie ich versucht habe, mit Meteor + Phonegap zu arbeiten.
Vielen Dank.
Antworten:
Ja, dies ist möglich, aber nicht durch Packen der Meteor-App auf dem Telefon. Sie müssen stattdessen Phonegap auf Ihren Meteor-Server richten (Sie können die API weiterhin für den Zugriff auf Funktionen auf dem Gerät verwenden). Hier sind die Anweisungen:
Das ist es. Kompilieren Sie die App und führen Sie sie aus.
Ein paar Zeitersparnisse:
quelle
config.xml
,<content src="http://127.0.0.1:3000/" />
da dies die Eigenschaft ist, die im ViewController standardmäßig auf appURL gesetzt wird.Ab Version 0.9.2 von Meteor ist Phonegap einfach zu verwenden: https://www.meteor.com/blog/2014/09/15/meteor-092-iOS-Android-mobile-apps-phonegap-cordova
quelle
Nun, ich denke, der beste Ausgangspunkt ist herauszufinden, wie weit Sie gehen wollen / müssen.
Würdest du wollen
Eine Meteor.js PhoneGap-App, die irgendwo eine Verbindung zu einem Server herstellt? Dann möchten Sie wahrscheinlich die Meteor-Klassen in einem PhoneGap-Projekt verwenden und mit Meteor.connect (url) eine Verbindung zu Ihrem Server herstellen.
Persistenz von Offline-App-Daten - Das wird schwierig ... Dafür wurde Meteor nicht entwickelt, obwohl es sicherlich Möglichkeiten gibt, dies
zu erreichen. Ich erinnere mich an Diskussionen von Backbone-, Spine- und
anderen clientseitigen JS-Frameworks. Es ist einfach, lokalen Speicher zu verwenden, aber der eigentliche Aufwand beginnt dort, wenn Sie Daten zwischen lokalem und dem Server synchronisieren möchten.
Das sollte helfen, auf den Punkt zu kommen ...
quelle
Ich habe bis zu einem gewissen Grad grob gearbeitet und hier den Prozess, dem ich gefolgt bin:
meteor bundle ../todos.tgz
Öffnen Sie anschließend die Datei app.html im Browser und stellen Sie sicher, dass der Server bereits ausgeführt wird. Auf diese Weise würde der Großteil der Anwendung funktionieren.
Dies ist jedoch nicht die Art und Weise, wie Sie es in Ihrer realen Anwendung verwenden möchten. Mit weiteren Änderungen ist es jedoch möglich, die Clientseite in Phonegap zu verwenden, wenn der Server an einem anderen Ort ausgeführt wird.
Bearbeiten
Meteor hat eine Methode zum Verbinden , um eine Verbindung zu einer anderen Meteor-Anwendung herzustellen, die den obigen Aufruf zum Ersetzen der URL möglicherweise auflöst, obwohl ich das noch nicht ausprobiert habe.
quelle
_start()
Methode. Überprüfen Sie die_start()
Methodendefinition, mit der das XHR-Objekt erstellt wird, und ersetzen Sie den URL-Parameter durch Ihre Zieldomäne.Hier sind einfache Schritte zum Portieren der Meteor-App auf ein mobiles Gerät mit PhoneGap Meteor auf ein mobiles Gerät mit PhoneGap
Ändern Sie einfach Ihren
stream_clientbf90.js
Port in Ihre Domain. Es funktioniert.quelle
Hier ist eine Live-Demo auf phonegap + meteorjs + oauth2.
Ich habe diese App mit Meteor auf Google Play erstellt.
https://play.google.com/store/apps/details?id=com.youiest.tapmatrix&hl=de
Es handelt sich um eine private Arbeit, daher konnte der Quellcode nicht veröffentlicht werden.
Bitte zögern Sie nicht, Fragen dazu zu stellen.
Es gibt mehrere Möglichkeiten, wie ich versucht habe, mit Meteor + Phonegap zu arbeiten.
Vielen Dank.
quelle
Es gibt auch dieses Paket: https://github.com/awatson1978/cordova-phonegap
Ich habe es nicht persönlich versucht, aber es scheint der richtige Ansatz zu sein.
Update: Im Devshop von August wurde Phonegap-Unterstützung vom Kernteam mit coolen Demos und so weiter angekündigt .
Um damit herumzuspielen:
Erste Schritte: https://meteor.hackpad.com/Getting-Started-With-Cordova-Z5n6zkVB1xq
quelle