2KB项目,专业的源码交易网站 帮助 收藏 每日签到

PhoneGap 的 WP7 技巧: 编写 PhoneGap 插件用来发送短信

  • 时间:2019-01-23 18:44 编辑:2KB 来源:2KB.COM 阅读:395
  • 扫一扫,手机访问
  • 分享
摘要:
PhoneGap wp7 英文原文:PhoneGap on WP7 Tip #3: Sending SMS and intro to Plugins 在这篇文章,将展示如何在 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 oschina.net, sir!";
smsTask.Show();

很简单直接是吧,需要注意的是这个发送短信是没有返回值的。接下来我们要提供一个 JavaScript 函数用来调用这个发送短信的方法,形如:

sendSMS.send(‘4045551212’, ’Hello oschina.net’);

整个过程需要两步走:首先,我们将上述的 C# 代码封装到一个类中的方法,在 PhoneGap 应用的项目结构图如下:

image

右键插件文件夹,选择 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 oschina.net";
            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# 代码了。

接下来我们只需要在页面中通过 <script> 标签引入刚定义的 js 文件,并调用如下方法:

window.plugins.smsComposer.showSMSComposer(recipients, message)

该方法接收一到多个号码和一个短信内容的参数。

ss1

最后我们还需要对 C# 代码进行处理让它接收这个 JSON 格式的 args 参数,因此需要使用 .NET 的反序列化库进行处理,下面是具体的代码:

using Microsoft.Phone.Tasks;
using System.Runtime.Serialization;

namespace WP7GapClassLib.PhoneGap.Commands
{
    public class sendSMSargs
    {
        [DataMember]
        public string toRecipients;

        [DataMember]
        public string body;
     }

    public class SendSMS : BaseCommand
    {
        public void send(string args)
        {
            sendSMSargs myargs = JSON.JsonHelper.Deserialize<sendSMSargs>(args);
           
            SmsComposeTask smsTask = new SmsComposeTask();
            smsTask.To = myargs.toRecipients;
            smsTask.Body = myargs.body;
            smsTask.Show();
                       
            this.DispatchCommandResult();
        }
    }
}

如果你需要在 Windows Phone 7 项目中使用该插件,你只需要一个 C# 类,并在 JavaScript 中调用 PhoneGap.exec 即可.

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部