PhoneGap的Windows Phone7技巧: 編寫PhoneGap插件用來發送短信
在這篇文章紅,將展示如何在 Windows Phone 上使用 PhoneGap 開發發送短信的應用,我們將通過 Microsoft.Phone.Tasks 命名空間中的 SMSCompose 來實現。PhoneGap 有實現對之進行封裝的插件。
PhoneGap 提供不少跨平臺的 API 用于處理各個平臺之間的差異,包括定位、存儲、聲音等等。而你的程序只需要使用 PhoneGa 提供的統一接口即可。但某些平臺具有一些其他平臺沒有的特性時,你就需要利用 PhoneGap 的插件來進行處理。
接下來我們將編寫一個 PhoneGap 插件用來發送短信,首先我們看 C# 是怎么發送短信的:
SmsComposeTask smsTask = new SmsComposeTask(); smsTask.To = "4045551212"; smsTask.Body = "Message from open-open.com, sir!"; smsTask.Show();
很簡單直接是吧,需要注意的是這個發送短信是沒有返回值的。接下來我們要提供一個 JavaScript 函數用來調用這個發送短信的方法,形如:
sendSMS.send(‘4045551212’, ’Hello open-open.com’);
整個過程需要兩步走:首先,我們將上述的 C# 代碼封裝到一個類中的方法,在 PhoneGap 應用的項目結構圖如下:
右鍵插件文件夾,選擇 Add New Item. 選擇 Class 并填寫你希望的名字,這里我們使用的是 SendSMS.cs. 該類有大量附加的 using 語句我們并不需要,刪除它們就是了。
接下來我們需要修改命名空間,默認該命名空間就是我們的 Visual Studio 項目。但我們現在需要將該類做為 PhoneGap 運行庫命名空間,因此將該類的命名空間修改為 WP7GapClassLib.PhoneGap.Commands. 另外我們還必須繼承 PhoneGap 運行庫的 BaseCommand 類,以便我們可以在 JavaScript 中調用到該類,只需要將類名后增加 : BaseCommand 即可。
接下來,在SendSMS類中我們需要一個方法來處理短信發送的代碼,我們創建一個 send 方法,因為需要使用 SmsCompose 任務,因此需要引入 using Microsoft.Phone.Tasks ,代碼如下:
using Microsoft.Phone.Tasks; namespace WP7GapClassLib.PhoneGap.Commands { public class SendSMS : BaseCommand { public void send(string args) { SmsComposeTask smsTask = new SmsComposeTask(); smsTask.To = "(678) 555-1212”; smsTask.Body = "Hello open-open.com"; smsTask.Show(); } } }
為了簡單,接收者和短信內容我們寫死了。
下一步就是如何在 JavaScript 中調用到這個 send 方法,下面是 JavaScript 的代碼:這是存放在項目中的一個 js 文件:
function SMSComposer(){ this.resultCallback = null; } SMSComposer.prototype.showSMSComposer = function(toRecipients, body) { var args = {}; if(toRecipients) args.toRecipients = toRecipients; if(body) args.body = body; PhoneGap.exec(null, null, "SendSMS", "send", args); } PhoneGap.addConstructor(function () { if (!window.plugins) { window.plugins = {}; } window.plugins.smsComposer = new SMSComposer(); } );
好了,現在可以忘記你的 C# 代碼了。
接下來我們只需要在頁面中通過