专注于Blackberry

每周一技: ServiceBook初探

关于Service Book,已经不止一次在本站讨论了。在这里还是简单概括一下:服务的配置。例如,上网,需要有GPRS和WAP的配置,对WIFI,有WIFI的配置。
本文是Service Book的初探,有必要的话或需求的话,我会更深一步讲解。
首先介绍如何访问机器上的Service Book,要实现这个功能,我们可以参考一下API,API已经提供了相关的接口了。代码如下:
ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] srs = sb.getRecords();
通过ServiceRecord,我们可以得到什么内容呢?

CID,比如邮件的CID为CMIME,可以通过srs[i].getCid得到相关内容
APN,既然访问网络,APN也必须得到,这对于一些网络编程非常有帮助
网络地址,和网络类型
其他

我建议看看ServiceRecord 该类的文档,说不定有意想不到的收获。
现在给出一个完整的例子:
public void listServiceBook()
{
ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] srs = sb.getRecords();

for(int index [...]

继续阅读本文 →

  

Confach发表于 July 23, 2009 6:09 pm | 留言(4) |每周一技 

故技重施:Blackberry Push API

大概是6月初,RIM以很强的声势推出一个新服务,名曰Blackberry Push API。在没有看文档前,我非常憧憬RIM能给我们带来惊喜。但是我看完之后,发现RIM仅仅把原来的技术重新包装了一遍。
从商业的角度讲,我非常赞成RIM的这种做法,现在的很多新概念有很多都是把N年以前的东西拿出来翻新一下,例如AJax,SaaS等,都取得了不错的效果。
但是从技术角度上讲,也确实没什么。
我将该服务总结为一句话,即将Blackberry最具特色的PUSH功能应用到客户的需求上。
即便如此,我还是将我N年以前使用过的技术重温一下,顺便也说说PUSH API 的应用。
应用背景:
先举个例子,未必是真实的。假如上海有家出租车公司小众(不是大众),要通知司机小张,有个客户在人民广场的来福士广场有个客户于14:00需要车,那么小众通过何种方式将这个信息传给小张呢?假如小众公司正在使用Blackberry的服务,那么可以通过Alert的方式来实现。
现在总结一下:

alert
新闻
财经
定单
文档
体育

服务不仅仅限于上面。
原理:
先看张图

简要解释一下:
先解释身份角色:
Push Initiator:相当于小众公司,后面见车简称PI
Blackberry Push Data Server:相当于部署在小众公司的Blackberry服务基础架构,后面简称BPIS
Mobile Client:司机小张的Blackberry终端,简称,MC
再解释一下流程:

PI发送一个push请求,即客户信息
BPIS给出一个返回给PI
BPIS就请求push给MC
MC收到后给出一个ACKnowledge,确认
BPIS给PI一个通知
PI收到后给BPIS一个返回

类似的机制和互联网的三次握手类似,就是Request/ACK/Response.目的就是为了保证大家都收到。
优点
很显然,省电,能够及时送达,安全,包括传送,以及安全送达。
实现

PAP
XML HTTP 请求
几种push,例如submit,cancel,query等,具体技术细节不讲,因为这些又可以单独拿出来了。

综合上述,如果您熟悉PUSH,是不是觉得似曾相识呢。
不管怎么说,从中,我们可以进一步,也更清晰了解Blackberry PUSH这个概念。这在以后的解决方案中提供不少思路。

继续阅读本文 →

  

Confach发表于 June 29, 2009 7:46 pm | 留言(2) |开发 

BlackBerry 应用程序开发者指南 第一卷:基础–附录:MDS服务参考

B
             附录:MDS服务参考

HTTP请求
HTTP响应
HTTPS支持
编码转化器
创建编码转化器
编译和安装编码转化器

 
HTTP请求[1]
一个客户端建立一个连接,并且发送一个HTTP请求消息到服务器.服务器然后发送一个响应消息,这个消息通常包含了请求的资源.

<method> <resource_path><version>
Header1: value1
Header2: value2
Header3: value3
<optional message>

HTTP请求变量

描述

method

方法名,指定了一个动作,例如GET,HEAD或POST.常用的方法是GET,它从服务器请求一个资源.

resource_path

指向请求资源的路径,它是URL中的一部分,在主机名后面出现.它也称为请求URL(Request URL).

version

你正在运行的HTTP版本,标记为”HTTP /x.x”.BES支持1.0和1.1版本.

Header

提供了关于请求的或在消息体里发送的对象的信息.

optional message

HTTP消息可以包含数据.在一个请求里,它是发送到服务器的用户类型的数据,或上传的文件.当一个对象伴随着此消息时,请求通常也包含定义它属性的消息头.

HTTP响应
在HTTP请求消息的接收之上,服务器发送一个响应消息,它通常包含了请求的资源.

<HTTP version><status_code><reason>
Header1: value1
Header2: value2
Header3: value3
<message>

 

HTTP响应变量

描述

HTTP_version

正在运行的HTTP版本,标记为”HTTP /x.x”.BES支持1.0和1.1版本.

status_code

状态码的数值,它反映了客户端提出的请求的结果。例如,200(OK)说明了传输成功,404(Not Found)说明了请求的URL没有找到。

reason

reason是和状态码相关的文本消息。

Header

消息头提供了响应的信息,也提供了消息体中正在发送的对象的信息。

message

HTTP消息必须包含数据。在一个响应消息里,它提供了客户端请求的的内容。此响应也包含了定义它的属性的消息头。

注:应用程序应该检查HTTP响应消息的状态码。任何不是200(OK)的状态码都说明当建立HTTP连接时发生了一个错误。
Push请求响应状态码
为push请求连接服务,BlackBerry MDS返回2种响应码:

l      PAP(Push Access Protocal)响应码。
l        RIM Push响应码。

注:访问www.wapforum.org获得更多关于PAP响应码的信息。
RIM Push请求响应码

RIM Push请求响应码

描述

解释

200

OK

请求成功完成。

400

任何其他的错误。

 

403

访问控制错误,或者未知的邮件地址或特定的BlackBerry PIN。

服务器接收了请求,但是不能响应。

503

服务器忙,服务不可用。

当前,服务器不能管理请求,因为暂时的负载或服务器正在维护。

HTTPS支持
如果你的应用程序通过Internet访问服务器,为了提过其他的验证和安全,在TLS上建立一个安全的HTTP(HTTPS)连接。
HTTPS认证(Certificate)管理
当BlackBerry设备以代理模式请求一个HTTPS连接时,BlackBerry MDS服务为BlackBerry设备建立一个SSL连接。系统管理员配置MDS服务,要么允许连接到未信任的服务器,要么是限制访问信任的服务器,这个配置仅适用代理模式下的连接。在end-to-end模式里,BlackBerry设备建立一个SSL连接。
在BlackBerry管理器里,系统管理员编辑MDS服务属性,并且设置TLS和HTTP选项,为获得更多信息,参看BES管理指南。
注:在MDS服务模拟器里,通过设置rimpublic.property文件来允许或拒绝访问未信任的服务器。设置application.handler.https.allowUntrustedServer参数为true或false。参看177页的“配置BlackBerry MDS模拟器”获得更多信息。
如果MDS服务包含认证,MDS服务将信任一个服务器。
使用keytool安装一个认证
    1.  保存认证。
    2.将认证文件拷贝到MDS服务所在计算机上的C:\Java\j2re1.4.2\lib\security文件夹。
    3.  为了将认证导入到键存储里,请使用keytool,它可以在JRE bin文件夹下找到,例如C:\Java\j2re1.4.2\bin.例如,输入:
  keytool -import -file <cert_filename> -keystore cacerts
访问http://java.sun.com/j2se/1.3/docs/tooldocs/win32/keytool.html 获得更多关于keytool的信息。
编码转化器
BlackBerry MDS支持插件的Java应用程序,称为编码转化器,它处理BlackBerry设备发送和接收的数据。
MDS服务提供下列缺省的编码转化:

编码转化名

描述

WML>WMLC

将.wml(Wireless Markup Lanuage)转化为一个压缩的格式。

WMLScript>WMLScriptC

将MIDlet应用程序为BlackBerry格式。

JAD>COD :XML>WBXML

将xml文件转化为下面的WAP二进制XML(.wbxml) MIME类型:application/vnd.wap.wbxml..

SVG >PME

将可svg(Scalable Vector Graphics)转化为BlackBerry设备支持的pme(Plazmic [...]

继续阅读本文 →

  

Confach发表于 April 23, 2008 8:41 pm | 留言 |文档