Cordova自定义插件结构没有回调?

时间:2012-05-14 16:31:09

标签: cordova phonegap-plugins

我正在创建我的第一个Cordova插件,以使用开源SDK。我遇到问题让它在没有回调的情况下运行,因为库没有任何问题(想想像分析一样)。还有一堆不同的格式,维基已经2年了,所以我不确定做什么是正确的做法。

我尝试了一些设置插件的不同变体,但都没有成功。

我的.js:

;(function(){

    if (Cordova.hasResource("myPlugin")) return

    Cordova.addResource("myPlugin")

    function MyPlugin() {
    }

    MyPlugin.prototype.setup = function(types) {
        return Cordova.exec("MyPlugin.setup", types);
    };

    Cordova.addConstructor(function() {
        if(!window.plugins)
        {
            window.plugins = {};
        }

       if (!window.plugins.myPlugin) {
           window.plugins.myPlugin = new MyPlugin()
       }
   })

})();

setup函数有4个参数,所有字符串。我在index.html文件中包含MyPlugin.js,然后在onDeviceReady()中调用:

window.plugins.myPlugin.setup('xxx-x-xxx','xxxx','xxxx','xxxx');

每当我尝试运行时,我都会收到错误[INFO] Error in success callback: NetworkStatus0 = TypeError: 'undefined' is not an object

我尝试了谷歌搜索等等,并找到了几种不同的PhoneGap插件格式,我已经尝试了所有这些,但都没有用。如果有帮助,我正在使用Cordova 1.6.1。

以下列出了我尝试模仿的不同结构:

所有这些都会产生相同的错误,所以我不确定问题是什么。

编辑:我还应该提一下,我的Obj-C代码没有被调用。 JS调用与插件的实际功能无关......

1 个答案:

答案 0 :(得分:4)

好的,对于其他任何想知道格式化的人......这是我得到的解决方案:

这适用于1.6.1 => 1.9x(但不要使用1.9,因为它有一个严重的stack overflow错误!)

var MyPlugin() = function() {};

MyPlugin.prototype.setup = function(types) {
    return Cordova.exec("MyPlugin.setup", types);
};

cordova.addConstructor(function() {
    if (!window.Cordova) {
        window.Cordova = cordova;
    };

    if(!window.plugins) window.plugins = {};

    window.plugins.myPlugin = new MyPlugin();
});

在Cordova 2.0中,addConstructor已被删除,并且无需检查Cordova ..

var MyPlugin() = function() {};

MyPlugin.prototype.setup = function(types) {
   return Cordova.exec("MyPlugin.setup", types);
};

//Keep at bottom but remove the addConstructor for Cordova 2+
if(!window.plugins) window.plugins = {};
window.plugins.myPlugin = new MyPlugin();