Cordova自定义插件结构,无回调?

Cordova自定义插件结构,无回调?,cordova,phonegap-plugins,Cordova,Phonegap Plugins,我正在创建我的第一个Cordova插件来使用开源SDK。我在没有回调的情况下运行它时遇到了一些问题,因为库中没有任何回调(比如分析)。还有很多不同的格式,维基已经有2年的历史了,所以我不确定什么是正确的方式 我尝试了几种不同的插件设置方法,但都没有成功 My.js: ;(function(){ if (Cordova.hasResource("myPlugin")) return Cordova.addResource("myPlugin") function My

我正在创建我的第一个Cordova插件来使用开源SDK。我在没有回调的情况下运行它时遇到了一些问题,因为库中没有任何回调(比如分析)。还有很多不同的格式,维基已经有2年的历史了,所以我不确定什么是正确的方式

我尝试了几种不同的插件设置方法,但都没有成功

My.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个参数,全部为字符串。我将MyPlugin.js包含在index.html文件中,然后在ondevicerady()中调用:

无论何时尝试运行,我都会在成功回调中收到错误
[INFO]错误:NetworkStatus0=TypeError:“undefined”不是对象

我尝试过谷歌搜索和其他方法,发现了几种不同的PhoneGap插件格式,我都试过了,但都没有成功。如果有帮助的话,我正在使用Cordova 1.6.1

下面是我尝试模仿的不同结构的列表:

它们都会产生相同的错误,所以我不确定问题出在哪里


编辑:我还应该提到,我的Obj-C代码没有被调用。JS调用出现了一些与插件的实际功能无关的问题…

好吧,对于任何想了解格式的人来说……以下是我找到的解决方案:

这适用于1.6.1=>1.9x(但不要使用1.9,因为它有严重的
堆栈溢出
错误!)

在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();

好的,对于任何想了解格式的人来说……以下是我找到的解决方案:

这适用于1.6.1=>1.9x(但不要使用1.9,因为它有严重的
堆栈溢出
错误!)

在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();

我怀疑什么?感谢这是帮助我进入正确的方向(Cordova 2.0),仍然是wiki StudesYEP,一切都像往常一样区分大小写。是的,我终于在Cordova 2.0中使用了它,我编辑了你的答案。如果你认为可以的话,请复习一下。没有一品脱做更多的回答我怀疑的资本化问题?感谢这是帮助我进入正确的方向(Cordova 2.0),仍然是wiki StudesYEP,一切都像往常一样区分大小写。是的,我终于在Cordova 2.0中使用了它,我编辑了你的答案。如果你认为可以的话,请复习一下。不必再回答了
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();