我正在创建我的第一个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调用与插件的实际功能无关......
答案 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();