Meteor能与PhoneGap一起使用吗?

68

一个 Meteor 模板能否被打包并部署为 PhoneGap 应用程序?


请查看@Mitja Bezenšek最新的答案,以获取使用Meteor(0.9.3)最新版本支持的最新方法。 - Norman H
7个回答

39

是的,这是可能的,但不能将Meteor应用程序打包到手机上。您必须将PhoneGap指向Meteor服务器(您仍然可以使用API访问设备功能)。以下是说明:

  • https://github.com/phonegap/phonegap获取最新版本的PhoneGap 2.2.*(2.1存在一个阻止此技术正常工作的错误)
  • 创建您的PhoneGap项目,并按照此处的说明白名单设置Meteor服务器域名
  • 对于iOS,请找到并打开CordovaLib / Classes / CDVViewController.m文件,大约在第175行左右,使用appURL = [NSURL URLWithString:@"http://your-server.com"];覆盖appURL。

就这样。编译并运行应用程序。

几个时间节省者:

  • 您可以通过将www/目录内容复制到Meteor服务器根目录来开始设置Meteor目录。确保复制client/目录下的JavaScript文件,以便它们在主Meteor js文件之前加载。
  • 从您的主Meteor js文件运行app.initialize(window),如果未传递窗口参数,应用程序将崩溃。
  • 不要尝试在Xcode中的www/目录下设置Meteor服务器。您将无法部署到设备,因为.meteor子目录包含指向您的节点模块的符号链接。

8
谢谢!但我没有改变ViewController。我只是将config.xml更改为<content src="http://127.0.0.1:3000/" />,因为这是默认情况下在ViewController中设置为appURL的属性。 - nooitaf

8

这是一个 Dev 商店的视频,展示了如何做到这一点:https://www.youtube.com/watch?v=4dJLPLWMImw - Justin

7

好的,我想最好的起点是确定你想要/需要走多远。

您是否希望

  • 一个连接到某个服务器的Meteor.js PhoneGap应用程序?那么您可能希望在PhoneGap项目中使用Meteor类,并使用Meteor.connect(url)连接到您的服务器。

  • 离线应用数据持久性 - 这将变得困难...这不是Meteor设计的东西,尽管肯定有方法可以实现。我记得backbone、spine和其他客户端JS框架的讨论。使用本地存储很容易,但当您想要在本地和服务器之间同步数据时,真正的努力才开始。

这应该有助于达到目标...


4
我已经以一种简单的方式完成了一些工作,以下是我遵循的过程:
  • 拿todos示例
  • 创建一个todos捆绑包,使用meteor bundle ../todos.tgz
  • 提取捆绑包,在编辑器中打开提取后的捆绑包
  • 打开static_cacheable/文件夹中的.js文件,并对其进行格式化,并将ajax调用从“file://”请求替换为实际主机请求。
  • 我在第1766行执行了这个操作,它创建了一个ajax处理程序。

    u.protoype._start = function(a, d, e, f){
        d = d.replace("file://localhost","http://localhost:3000");
        ...
    }

请打开浏览器中的app.html文件,并确保服务器已经在运行。这样你就可以使用大部分应用程序了。
然而,这并不是你想在真实应用程序中使用的方式,但是通过进行更多的更改,可以在Phonegap中使用客户端,同时让服务器在其他地方运行。
编辑
Meteor有一个方法connect可以连接到不同的Meteor应用程序,这可能会解决上面的URL替换调用问题,尽管我还没有尝试过。

我在我的static_cacheable / * .js文件中没有看到任何“file://”字符串。 我尝试编辑app.html中的css和script行,以使用完全限定的服务器URL('http://myapp.meteor.com/xxxx.js'而不是'/.xxxx.js'),但这只会导致Phone Gap应用程序中出现白屏。 Phone Gap正在本地提供app.html,我该如何修改js以指向我的服务器? - mb.
你不会直接找到它,它作为参数传递给 _start() 方法。检查 _start() 方法的定义,该方法创建 XHR 对象并将 URL 参数替换为目标域名。 - dhaval

4
以下是关于使用PhoneGap在移动设备上端口Meteor应用的简单步骤:

只需更改您的 stream_clientbf90.js 以端口到您的域名即可正常工作。

更多详细信息请参见Meteor on Mobile Device using PhoneGap


2
欢迎来到Stack Overflow!感谢您发布答案!请务必仔细阅读有关自我推广的FAQ。同时请注意,每次链接到您自己的网站/产品时,必须发布免责声明。 - Andrew Barber
2
这篇博客似乎已经过时了,因为Meteor正在快速变化。文章中提到的文件在我的项目中不存在。 - Micha Roon

2

这个还包括使用Meteor服务器的推送通知功能。 - nicolsondsouza
你是如何实现推送通知的?你有参考过哪些示例或文档吗? - adairdavid
在Android上,Meteor推送通知非常容易实现,但在iOS上则比较困难。 - nicolsondsouza

2
这里还有一个包:https://github.com/awatson1978/cordova-phonegap 我个人没有尝试过,但它似乎是正确的方法。
更新:在8月的开发商店中,核心团队宣布了PhoneGap支持,并展示了很酷的演示。
想要玩一下它:
meteor update --release CORDOVA-PREVIEW@3

开始入门:https://meteor.hackpad.com/Getting-Started-With-Cordova-Z5n6zkVB1xq

这是一个有关Cordova的入门指南链接,它将帮助您了解如何使用Cordova创建跨平台移动应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接