开发启用了 SMS 的业务流程应用程序 |
||||||||||||||||||||||||||||||
| 作者:Christian Forsberg 来源:businessanyplace.net 发布时间:2005-12-21 20:38:00 | ||||||||||||||||||||||||||||||
|
Christian Forsberg 2003 年 5 月 适用于: 摘要:作为移动电话家族的高级成员,具有内置电话功能的 Windows Powered Pocket PC Phone 有多个连接选项。核心功能为可连接至 Internet,除此之外,还有其他可用选项。在所有的全球移动通信系统 (GSM) 网络中,一种常用的通信方式便是使用短消息服务器 (SMS) 消息。在设计连接移动电话应用程序时,这是一个不容忽视的选项,本文将对其原因进行解释。(本文还包含英文链接。请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解。) 下载 sms_apps.exe 什么是 SMS?短消息服务器使移动电话(包括 Pocket PC Phone)能够使用 GSM 网络发送短消息,它具有许多有趣的功能:
要使用 SMS,用户需要预订支持 SMS 的移动网络,并且必须为该用户启用 SMS 的使用。用户需要有发送短消息或接收短消息的目的地。该目的地通常是其他的移动电话,但也可以是服务器。最后,用户还需要有支持 SMS 的移动电话,并需要了解如何使用其特定型号的移动电话发送或阅读短消息。 为什么使用 SMS?对于应用程序开发人员来说,将 Pocket PC Phone 连接至服务器的即时解决方案可能是通过基于 IP 的网络,例如 Internet。这种做法的优势包括:已经存在公用标准协议,而且通信工具也是现成的。 但是,在某些情况下,基于 IP 的网络并非是最有效的传输方式。主动甚至自动地进行连接需要占用宝贵的时间,而且在通话时不能进行连接。如果存在一种即使是在通话时也能即时连接至服务器的方法,那会是什么呢?既然 Pocket PC Phone 可以发送 SMS 消息,它也许是一种实现办法。 通常在四处走动的工作人员需要向业务流程应用程序通知重要事件时,即时连接非常有用。可能是通知服务器有新订单的推销员,也可能是刚刚送完货的卡车司机。 在服务器方面,有多种解决方案可用于接收 SMS 消息并将其转发给其他系统。例如 MobileSys, Inc. 和 Smartserv Online, Inc. 的产品。在本文中,我们将进一步探讨 Pocket PC Phone 的 SMS 性能。 SMS API在 Pocket PC Phone 上,您可以使用大量的 Microsoft® Windows® CE API 调用来访问 SMS 消息功能:
会话以调用 SmsOpen 开始,这将返回一个 SMS 句柄,此后,在调用 SMS API 函数时均需要此句柄。通过将此句柄传递给 SmsClose 来终止会话。本文将着重说明使用 .NET CF 中平台调用功能的 SmsSendMessage API,类似的技术也可用于访问其他 API。 SMS Anyplace 示例该示例是使用 Microsoft Visual Studio® .NET、C# 和 .NET Compact Framework 创建的 Pocket PC Phone 的示例应用程序。它演示了如何使用 SMS API 发送 SMS 消息。该应用程序包含一个表单:
图 1:SMS Anyplace 示例 本示例的构思为:送货的卡车司机无需连接至任何基于 IP 的网络(例如 Internet)即可将通知即时发送给服务器上的业务流程应用程序。 请想象一下,在货物列表中作出选择,随后的屏幕将显示选中的货物标识以及当前的日期和时间。只需敲击“发送”按钮即可。 敲击“发送”按钮后,发送信息将被编译成 XML 消息字符串,您可以在屏幕下半部分看到该字符串。该信息可能不会显示在实际应用程序中,在此处显示只是为了便于说明。XML 格式可以确保接收服务器能够以标准方式访问信息。然后无需任何连接,甚至无须打断正在进行的语音对话,便可使用 SMS 将 XML 发送至服务器。 代码演练让我们从“发送”按钮所表示的代码开始: // 创建 XML 消息
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlw = new XmlTextWriter(ms, System.Text.Encoding.UTF8);
xmlw.WriteStartDocument();
xmlw.WriteStartElement("Delivery");
xmlw.WriteElementString("PackageID", lblPackageID.Text);
xmlw.WriteElementString("Delivered", txtDelivered.Text);
xmlw.WriteEndElement();
xmlw.WriteEndDocument();
xmlw.Flush();
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
txtMessage.Text = sr.ReadLine();
lblMessage.Text = "Message (" + txtMessage.Text.Length.ToString() + "
chars):";
this.Refresh();
xmlw.Close();
sr.Close();
// 发送消息
if (0 == SMSHelper.SendSMS("+15555550123", txtMessage.Text))
MessageBox.Show("Message sent!", this.Text, Me |
||||||||||||||||||||||||||||||
| [] [返回上一页] [打 印] | ||||||||||||||||||||||||||||||
文章评论 |
||||||||||||||||||||||||||||||

