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