[SMS&WAP]实例讲解制作OTA短信来自动配置手机WAP书签
编写者
|
日期
|
关键词
|
郑昀@ultrapower
|
2005-9-5
|
Sms wap ota 书签 空中下载 手机上网设置 WDP WSP WBXML
|
源代码:
http://www.cnblogs.com/Files/zhengyun_ustc/
otasms.rar(不能下载的话,请来信)
空中下载
(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:
l 浏览器设置
l 浏览器的书签设置
l SyncML设置
也就是说,你通过发送短信可以帮助用户手机配置这三种设置。
商业应用示范
网易有一个很好的示范,你可以浏览
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);
|
发送短信,你就可以立即在手机上看到效果。
下面,我们来铺垫:
你要给目的手机发送一条短信,它必须是二进制格式的,这样手机才能够识别出来。
这条短信内容差不多分为三块:
l WDP Layer的包头;
l WSP Layer的包头;
l WBXML。
书签的真正内容是用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堆栈被定义为五层,自底向上依次是:
u WDP (Wireless Datagram Protocol),
u WTLS (Wireless Transport Layer Security),
u WTP (Wireless Transaction Protocol),
u WSP (Wireless Session Protocol),
u WAE (Wireless Application Environment,包括 Wireless Markup Language 或 WML, 以及 WMLScript )。
每一层都和3W堆栈层面大致吻合:
n WDP->IP,
n WTP->TCP,
n WTLS->SSL/TLS,
n WSP->HTTP,
n WML->HTML。
这时你可以参考
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
|
687474703A2F2F7761702 E7961686F6F2E636F6D
|
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
|
0B0504C34FC002000304010101062C1F2A6170706C69636174696F6E2F782D7761702D 70726F762E62726F777365722D73657474696E67730081EA01016A0045C67F018715110 3E68891E79A8477617000018717110387687474703A2F2F6D797761702E636F6D00010101
|
稍候我们按照《OTA_service_settings_example_v11.pdf》解释一下这个字符串每一个字符的含义。
我们还提供了一个公开的Web Service:
http://219.238.168.183/SendBinarySMS/sendsms.asmx?wsdl
Web service介绍
|
提供免费的发送二进制短信的渠道。本服务仅供测试OTA自动配置和书签短信。中国移动有监控,请勿作其他用途。
支持下列操作。有关正式定义,请查看服务说明。
· send 填写二进制短信的HEX ASCII文本内容。比如“0B0504C34FC0020003040202296A0101860711036874”之类的。具体要填写的内容,请参考我的OTASMS工程,它会帮助你生成要发送的二进制内容。
|
分享到:
相关推荐
基于OTA技术的手机参数配置系统,梁玮,邹俊伟,本文主要简述了OTA和手机参数配置的基本概念,并详细介绍了基于OTA的手机参数配置系统的框架设计及其具体实现,最后对其实现提出了
OTA配置的XML格式和对应的WBXML文档格式说明,支持GPRS配置,主页配置,书签配置,同步配置,文档中有对应的XML和WBXML示例,可参照这些示例完成实际手机OTA配置的开发。
全差分OTA经典实例 全差分OTA经典实例 全差分OTA经典实例
泰凌微电子的手机ota 的apk, 方便客户自由下载,无需通过邮件发送,加快客户的开发速度。泰凌微电子的手机ota 的apk, 方便客户自由下载,无需通过邮件发送,加快客户的开发速度。
Magisk模块-神仙自动救砖-支持OTA稳定.zip
3、 根据被测产品维持通话的稳定度的不同,OTA测试的时间也有所不同。乐观情况下,OTA测试时,对于一个GSM频段需要2.5个小时,一个WCDMA频段是8个小时。 4、 机构强烈建议被测试产品的制造商自行提供测试便携,一者...
此实例是Toshiba蓝牙TC35678~9的代码工程案例,搭建有完整的服务数据库(database):包括电池电量监测,温度监测,透传,OTA空中升级等服务。其中OTA空中升级服务需要搭配专用的APP来实现。 有用到东芝蓝牙的小伙伴...
手机本地OTA升级验证步骤,适合手机软件开饭技术人员使用。
自动部署ota升级服务源码.zip
手机OTA升级是指Android系统提供的标准软件升级方式,可以无损失升级系统,主要手段是通过网络(包括WIFI、3G)自动下载OTA升级包、自动升级,不局限,也支持通过下载OTA升级包到SD卡升级. 手机OTA升级以补丁方式的...
ota固件制作
苹果手机阻止OTA升级方法,/System/Library/LaunchDaemons(该目录下文件比较多
各个频段自由空间人头的标准;中移动手机产品入库OTA标准
android_ota_升级包
OTA7290B 是一款高度集成的 1803 通道源极驱动器,带有 MIPI 接口,带有时序控制器,适用于中尺寸彩色 TFT-LCD 面板。 OTA7290B 将源极驱动器、时序控制器、VCOM 缓冲器、伽玛缓冲器、GIP、图像处理单元和 MIPI 接口...
Android OTA升级流程,获取版本信息,下载完后MD5校验,OTA检测。
本文讲述了android系统中的OTA机制,其实就是和recoversystem类相关的知识。
Nokia OTA setting example 你可以根据文档中的例子去写自己的脚本 然后转换成合适的二进制信息 发给自己的手机后 可以配置自己的手机
OTA5380详细的spec,驱动调试可以查看此文档,有详细的寄存器使用说明。有需要调试底层驱动的人员可以参考此文档!
CTIA 的OTA 测试指标直接反映了手机的辐射性能,因此越来越受到测试机构和相关厂商的重视。在手机天线指标判定时,需要将无源和有源性能指标综合考虑,对整机天线性能进行综合评价。 MORAB的OTA天线测试暗室符合...