2012-09-22 138 views
0

我正在嘗試爲科爾多瓦2.0.0編寫自定義插件。 我想製作的自定義插件必須獲取WP重音顏色,所以我可以在應用程序樣式中使用它。自定義科爾多瓦插件

但我無法設法使其正常工作,無法弄清楚我做錯了什麼。

Index.js

function onDeviceReady() { 
    click(); 
} 
function click() { 
    navigator.notification.alert(callback, callback, "text", "button"); 
    window.getAccentColor(); 
} 

GetTheme.cs

namespace Cordova.Extension.Commands 
{ 
    // Use the phonegap base class 
    public class GetTheme : BaseCommand 
    { 
    public void Get() 
    { 
     Color currentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"]; 
     var result = new PluginResult(PluginResult.Status.OK, currentColorHex.ToString()); 
     DispatchCommandResult(result); 
    } 
    } 
} 

GetTheme.js

window.getAccentColor = function() { 
    cordova.exec(win, error, "GetTheme", "Get"); 
} 

function win(result) { 
    console.log(result); 
    console.log("2"); 
}; 


function error() { 
} 

有一個有些事有點奇怪,我注意到了。 隨着點擊動作彈出通知「2」被寫入輸出。但沒有它不輸出任何東西。

在這兩種情況下resultwin功能仍然是空的,並沒有任何輸出。

所有* .js文件都包含在頭部的index.html文件中。 通知中的回調方法已定義,但它什麼都不做。

我也嘗試了WP7CordovaClassLib.Cordova.Commands命名空間。

回答

0

Cordova documentation page

// all JS callable plugin methods MUST have this signature! 
// public, returning void, 1 argument that is a string 

因此,在你GetTheme.cs,改變

 public void Get() 

 public void Get(string options) 
+0

感謝您的回答,但不幸的是它沒有幫助。我刪除了一些無用的測試代碼,並且我注意到我的插件甚至沒有被調用。 – sebastian

0

找到這些問題的答案將會有助於你(和我們)明白爲什麼你的插件不被稱爲....

  • isDeviceReady被調用?
  • 點擊被調用?
  • 這對我來說很陌生「navigator.notification.alert(回調,
    回調,」text「,」button「);」這應該怎麼做
  • VS.NET的輸出窗口是否顯示任何JS錯誤,它們是
    阻止其他js執行?
+0

要回答你的問題: -onDeviceReady被稱爲 -click被稱爲 -'navigator.notification.alert()顯示WP7風格確認。 - 無VS.NET或JS中顯示的錯誤 我已經嘗試了插件的不同位置,但仍然沒有。我設法通過編輯和現有的插件來實現它。 PhoneGap網站上的示例有很多不同之處。 – sebastian

+0

如果插件名稱中存在命名空間問題,即我的插件沒有被調用,即cordova exec的第三個參數是錯誤的。如果沒有爲cordova exec的options參數(第5個參數)提供值或錯誤值,我也看到了我的插件未被調用。 – CedricB

0

這個C#部分看起來和我的插件完全一樣,所以我覺得沒問題。

但是,javascript部分不同。這是我的完整插件。JS(真正簡單的插件,它會調用Windows Phone上的創造,新的短信任務,因爲它沒有導航迴應短信:計劃的像iOS和Android)

function SMSComposer() { 
    this.resultCallback = null; 
} 

SMSComposer.prototype.showSMSComposer = function (toRecipients, body) { 

    var args = {}; 
    var smsComposerOk = function() { console.log("SMSComposer Called OK"); }; 
    var smsComposerError = function (error) { console.log("SMSComposer error:" + error); }; 
    if (toRecipients) { 
     args.toRecipients = toRecipients; 
    } 

    if (body) { 
     args.body = body; 
    } 

    Cordova.exec(smsComposerOk, smsComposerError, "SendSMS", "send", args); 
}; 

SMSComposer.install = function() { 
    console.log("SMSComposer being installed"); 
    if (!window.plugins) { 
     window.plugins = {}; 
    } 
    window.plugins.SMSComposer = new SMSComposer(); 

    return window.plugins.SMSComposer; 
}; 

,並在我的onDeviceReady()我有.....

if (window.device && window.device.platform == "WinCE") { 
     SMSComposer.install(); 
    } 

我正在使用Cordova 2.0。 確保您正在檢查控制檯的日誌消息。如果Cordova在某處失敗,則會記錄一些內容。

相關問題