首页  编辑  

OTA 短信

Tags: /超级猛料/Network.网络通讯/BP短讯和手机短消息/   Date Created:

OTA关键指令

以下指令为控制手机操作OTA菜单的,需要手机支持才可以:

at+csim, 参考 GSM 0707,8.17小节

at+cscs,

[SMS&WAP] 实例讲解制作 OTA 短信来自动配置手机 WAP 书签

编写者 日期 关键词
郑昀 @ultrapower 2005-9-5 Sms wap ota 书签 空中下载 收集上网设置 WDP WSP WBXML

空中下载 (OTA) 的概念

OTA ,即 Over The Air ,国内翻译为空中下载 。

OTA标准由爱立信和诺基亚共同制订。OTA涵盖了许多范围,比如Kjava中的应用程序下载也是通过OTA。 我们这篇文章主要讲的是,通过短信方式空中下载配置信息, 参考的文档是OTA_settings_general_7_0.pdf。

https://secure.forum.nokia.com/main/1,6566,1_47_50_10,00.html

你可以看到许多 Nokia - Ericsson OTA Documents 。

下载 OTA Setting 规范:http://sw.nokia.com/id/3377eb33-cb1d-490e-a1cb-8735d785e1d3/OTA_settings_general_7_0.pdf

下载 OTA Setting 示范:http://sw.nokia.com/id/bf5f034f-be06-4506-87b7-22788de5c316/OTA_service_settings_example_v11.pdf

规范中定义了三种 Setting :

也就是说,你通过发送短信可以帮助用户手机配置这三种设置。

商业应用示范

网易有一个很好的示范,你可以浏览 http://wapapps0.163.com/wap/OTASetting.jsp?type=all

它下面的注解也说了:

OTA 自动配置 简单来说就是通过一条特殊格式的短信为客户手机设置手机参数。

适合机型:所有支持 OTA 设置的开通 GPRS 的 WAP 手机。 ( 常见的支持 OTA 的机型有:索尼爱立信、爱立信、诺基亚等。 ) 

它的这个示范是可以给你的手机上发送两个短信的,一个是你的 WAP 上网浏览器设置,一个是他的 WAP 书签。两条短信的显示标题都是"配置信息"。

我们下面具体讲解一下" WAP 书签"的 OTA 短信生成办法。

       

简单粗暴直奔主题

原则上,你只要看了 OTA_settings_general_7_0.pdf,并参照OTA_service_settings_example_v11.pdf,就可以轻松地制作出符合规范的OTA短信 。

但是,本文档的目的就是让你简单粗暴地直奔主题,看完这篇文档后,就了解了 OTA 短信的概念,通过以下代码:

OTAMessage
OTAMessage message = new OTAMessage();
txtOTAResult.Text = message.GetSMSBytes(txtBookmarkName.Text, txtBookmarkURL.Text);
来生成短信二进制内容,并通过

UltraBinarySMS
UltraBinarySMS.SendSMS sendsms = new UltraBinarySMS.SendSMS();
string strResponse = sendsms.send(content, destmobile);

发送短信,你就可以立即在手机上看到效果。


下面,我们来铺垫:

你要给目的手机发送一条短信,它必须是二进制格式的,这样手机才能够识别出来。

这条短信内容差不多分为三块:

书签的真正内容是用 WBXML 表述的。


WDP 、 WSP

什么是 WDP 和 WSP 呢? 

WDP 即 Wireless Datagram Protocol 。 WSP 即 Wireless Session Protocol 。

更多信息可以参考 http://www.protocols.com/pbook/wap.htm

WAP Forum 在设计 1.x 版本的时候是经过深思熟虑的,但它和我们熟知和喜爱的 3W 协议 ( 比如 HTTP, SSL 和 HTML) 并不兼容。

WAP1.x 堆栈被定义为五层,自底向上依次是:

        每一层都和 3W 堆栈层面大致吻合:

        这时你可以参考http://www.protocols.com/pbook/images/wapstack.gif,The OSI Model for Wireless Communication 。

由于 WSP 相当于 HTTP 层,那么 WSP 层所肩负的职责是:

        1). 提供 HTTP 1.1 的功能和语义

        2). 能力协商

        3). 会话状态长期保存

        4). 会话挂起和恢复

        5). 可靠以及不可靠的 Push 的公共机制

        等等。


在我们的 OTA 实现中, WSP Header 其实就是声明两个内容: PDU type 和 MIME Type ; 至于 WDP ,就是声明一个端口号,并说明本数据包是整条短信的第几个包。

本实现代码参考了 CodeProject 上的一个生成 WAP Push 的工程,所以你将会看到类似于它的 WDP 、 WSP 类和方法 。

       WBXML

WBXML ,就是 WAP Binary XML 。

简单地说,它就是一个定义好的 XML 片断,可以表述出 WAP 浏览器设置、 WAP 书签设置等等内容。

比如,这样一个实例:

UltraBinarySMS
<CHARACTERISTIC-LIST>
	<CHARACTERISTIC TYPE="BOOKMARK">
		<PARM NAME="NAME" VALUE="yahoo"/>
		<PARM NAME="URL" VALUE="http://wap.yahoo.com"/>
	</CHARACTERISTIC>
</CHARACTERISTIC-LIST>

这样指明一个名为" yahoo "的 WAP 书签,指向 http://wap.yahoo.com

很简单不是吗?但是如何将这个 XML 转换为短信所需要的二进制呢?

转换过程:按图索骥

Nokia 是这么定义转换规则的,很简单,就是尽可能简短地用一个字符表示某一个元素。比如我们上面定义的 WBXML 可以用下面的转换规则 :

WBXML 节点定义 对应的二进制 ASCII 字符
<CHARACTERISTIC-LIST> 45
<CHARACTERISTIC C6
TYPE="BOOKMARK" 7F
> (End attribute) 01
PARM 87
NAME="NAME" 15
VALUE 11
String start 03
Yahoo 7961686F6F
String end 00
/> End (PARM) 01
PARM 08
NAME="URL" 17
VALUE 11
String start 03
http://wap.yahoo.com 687474703A2F2F7761702E7961686F6F2E636F6D
String end 00
End (PARM) 01
End (CHARACTERISTIC) 01
End (CHARACTERISTIC-LIST) 01

是不是很简单?具体的转换规则,可以参考《 OTA_settings_general_7_0.pdf 》的 8.2 章节。

下面简单说一下分包:

分包

如果你的短信既要设置浏览器,又要设置书签,就有可能短信内容超长,必须事先分为两个或者多个包 。

《 OTA_settings_general_7_0.pdf 》

和《 OTA_service_settings_example_v11.pdf 》的例子可以很明显地看出来这一点。

每个包还按照二进制短信发出,由客户端 - 手机自行合并为一个,并解析。

《 OTA_service_settings_example_v11.pdf 》的例子中,通过 WDP 的包头来设置:

02 代表共有两个包( Total no. of segments in datagram );

第一个短信的 01 代表这是第一个包 (segment count) ;

第二个短信则是 02 。

我的源代码OTASMS 工程中有一个 OTACreator 项目,它提供了一个 com.ultrapower.OTACreator.dll ,来给出如何根据输入参数 " 书签标题 " 和 " 书签 URL" 生成最终要发送的 OTA 短信内容。它的调用方法如下所示:

OTAMessage
OTAMessage message = new OTAMessage();
string strSMSContent = message.GetSMSBytes( " 我的WAP " , " http://mywap.com " ); 

 strSMSContent 就是我们要的短信内容。上面的代码执行之后,得到的二进制 ASCII 文本内容是:

Sms content
0B0504C34FC002000304010101062C1F2A6170706C69636174696F6E2F782D7761702D70726F762E62726F777365722D73657474696E67730081EA01016A0045C67F0187151103E68891E79A8477617000018717110387687474703A2F2F6D797761702E636F6D00010101

稍候我们按照《 OTA_service_settings_example_v11.pdf 》解释一下这个字符串每一个字符的含义。

我们还提供了一个公开的 Web Service :ttp://219.238.168.183/SendBinarySMS/sendsms.asmx?wsdl

Web service 介绍
提供免费的发送二进制短信的渠道。本服务仅供测试 OTA 自动配置和书签短信。中国移动有监控,请勿作其他用途。

支持下列操作。有关正式定义,请查看 服务说明

0222_520.pdf (236.1KB)
0348-890.doc (779.0KB)
0707_531.PDF (553.7KB)
1111_550.pdf (1.0MB)
OTA.pdf (416.1KB)
OTA_service_settings_example_v11.pdf (85.2KB)
OTA_settings_general_7_0.pdf (219.2KB)
otasms.zip (208.7KB)