Cordova 3.3.1-0.1.2(Phonegap)插件不起作用

23t*_*tux 5 git plugins android ios cordova

我有一个适用于iOS的cordova 3.3.1-0.1.2测试项目,我使用以下插件(cordova plugin ls):

[ 'com.phonegap.plugins.PushPlugin',
  'org.apache.cordova.console',
  'org.apache.cordova.device',
  'org.apache.cordova.splashscreen' ]
Run Code Online (Sandbox Code Playgroud)

我添加了这样的插件cordova plugin add org.apache.cordova.device.在我的git repo中,我看到它将一堆文件添加到plugins/org.apache.cordova.device目录中,在我的iOS插件目录中创建一个CDVDevice.h和一个CDVDevice.m,更新ios.json,更新*.xcodeproj文件并将插件添加到我的config.xml内部platforms/ios/test-app/config.xml:

<feature name="Device">
    <param name="ios-package" value="CDVDevice" />
</feature>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问JS中的deviceor window.device属性时,它告诉我,这device是未定义的.奇怪的是,pushPlugin存在:

document.addEventListener("deviceready", function () {
   console.log(device);
   console.log(window.device);
   console.log(window.plugins.pushNotification);
});
Run Code Online (Sandbox Code Playgroud)

window.plugins对象仅将pushNotification插件列为属性.这很奇怪,因为它们都已安装完毕,在安装过程中,cordova说,一切都很好.

我有点困惑,关于过时的,混合的电话差距文档,但如果其中一个可行,那就没关系.我也看到了一个插件定义,config.xml就像这样

<gap:plugin name="org.apache.cordova.device" />
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,有什么区别?feature与cordova 3.3一起工作的方式是什么?当我尝试使用该<gap:plugin...格式时,我的应用程序在启动时崩溃.

所以,请帮助我解决这个问题,并清除我的想法;)

23t*_*tux 5

不幸的是,没有一个答案奏效.幸运的是,我在这个邮件列表中找到了解决方案:

http://mail-archives.apache.org/mod_mbox/cordova-dev/201312.mbox/%3CCABiQX1Vat5XvmKkWt=+viL9oXWnOiAz5ee95h8oJp0j4MU9pJQ@mail.gmail.com%3E

他们说,这是cordova 3.3.1中的一个错误.在此版本中,插件将被复制到.staging不同平台的目录中.

因此,使用npm降级到cordova 3.3.0现在可以使用(在Mac OS X上):

sudo npm remove -g cordova
sudo npm view cordova versions
sudo npm install -g cordova@3.3.0-rc.1
Run Code Online (Sandbox Code Playgroud)

如果可以从phonegap安装cordova,还要检查一下.如果你使用cordova,而不使用phonegap功能(如远程构建),你可以安全地删除phonegap包

sudo npm remove -g phonegap
Run Code Online (Sandbox Code Playgroud)

更新

当前版本3.4.0工作正常,并没有这个问题.