Kann Meteor mit PhoneGap verwendet werden?

68

Kann eine Meteor-Vorlage gepackt und als PhoneGap-Anwendung bereitgestellt werden?

Marcus Estes
quelle
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).
  • Erstellen Sie Ihr Phonegap-Projekt und führen Sie die Whitelist Ihres Meteor-Server-Domainnamens anhand der folgenden Anweisungen auf: http://docs.phonegap.com/de/1.9.0/guide_whitelist_index.md.html
  • 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.
snez
quelle
8
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.
Nooitaf
7

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 ...

thomasf1
quelle
4

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.

Dhaval
quelle
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.
Dhaval
4

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.jsPort in Ihre Domain. Es funktioniert.

Snowflax
quelle
2
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.

nicolsondsouza
quelle
Dieser hat auch Push-Benachrichtigung mit Meteor Server.
nicolsondsouza
Wie haben Sie Push-Benachrichtigungen erhalten? Gibt es Beispiele oder Dokumente, die Sie sich angesehen haben?
Adairdavid
Es gibt Meteor Push-Benachrichtigung einfach in Android und schwer für iOS.
Nicolsondsouza