2012-05-14 52 views
2

我正在創建我的第一個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() 
     } 
    }) 

})(); 

的設置函數需要4個參數,所有的字符串。我包括MyPlugin.js index.html文件中,然後在onDeviceReady()我稱之爲:

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

每當我嘗試運行我得到的錯誤[INFO] Error in success callback: NetworkStatus0 = TypeError: 'undefined' is not an object

我嘗試過使用Google和Whatnot,並且發現了幾種不同的PhoneGap插件格式,並且我嘗試了所有這些插件格式,但都沒有成功。如果有幫助,我使用Cordova 1.6.1。

這裏的不同結構的名單我已經試過模仿:

他們都產生了同樣的錯誤,所以我不確定問題是什麼。

編輯:我還應該提到,我的Obj-C代碼沒有被調用。有什麼東西了與JS調用無關的插件的實際功能...

回答

4

好了,爲別人想知道更多關於格式化......這裏是我得到了工作的解決方案:

這適用於1.6。 1 => 1.9倍(但不使用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(); 
}); 

在科爾多瓦2.0 addConstructor已被移除,並檢查科爾多瓦是沒有必要..

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(); 
+0

我懷疑大寫事務嗎?感謝這幫助我進入了正確的方向(科爾多瓦2.0),仍然維基臭 – ppumkin

+0

是的,一切都是區分大小寫的。 – MishieMoo

+0

Yea-我終於在科爾多瓦2.0工作了我編輯了你的答案。請檢查它,如果你認爲它確定。沒有品脫提供更多答案 – ppumkin

相關問題