DemoApp20 移动商务应用项目技术点




·         基于5.0 SDK以上版本的客户端推送

 

实现推送关键的类包括:

 

PushApplication - 实现推送客户端的接口

PushApplicationDescriptor -根据应用属性创建和管理推送客户端,端口,URL,App ID等。

PushApplicationRegistry - 注册推送客户端

 

实现客户端推送有两个步骤:一是创建和实现推送客户端,二是注册推送客户端并启动侦听。


 

1.   创建和实现推送客户端,参考类DemoApp

 

 

 

public class DemoApp extends UiApplication implements PushApplication{

// 让程序入口DemoApp实现推送接口,DemoApp也成为推送客户端

 

public static void main(String[] args){

// 程序启动入口

}

 

    public voidPushInputStream

    // 当有推送数据达到客户端时,调用该接口。数据在input中。

}

 

    public void onStatusChange(PushApplicationStatus arg0) {

    // 当推送客户端状态改变时,调用该接口。

    }

}

 

2. 注册并启动侦听,参考类OptionsScreen的构造函数

 

 

ButtonField listenButton = new ButtonField("开始侦听") {

 

   protected boolean navigationClick(int status, int time) {

      try {

         int pushPort = OptionsData.getInstance().getPushPort();//侦听端口

         PushApplicationDescriptor pad =

         new PushApplicationDescriptor(pushPort);

         PushApplicationRegistry.registerApplication(pad);//注册

         Dialog.inform("侦听启动成功!");

      } catch (Exception e) {

         Logger.log("unable to start push listener" + e);

         Dialog.inform("侦听启动失败!");

      }

      return true;

   }

};

 

 

·         BI报表图

 

BI报表模块目前支持三种商务报表,柱状图、饼状图、折线图。图2为三种商务报表在9800上的显示。


 

 

 

 

                             图2

 

报表通过JavaScript的调用实现。每一张报表都是一个HTML文件,HTML内嵌JavaScript来绘制报表。每个HTML文件通过规定的URL格式在控件BrowserField上显示。再将BrowserField 添加到Screen上展示给用户。实现流程如下:

 

1.       BIDocumentScreen.displayMessage(Manager)调用BrowserField显示HTML报表:

 

 


 

 

 

该代码中的url指向HTML报表页面,例:doc.setURL

("local:///cn/blackberry/bi/web/sample/bar.html");请参考 BIDocumentManager.initSampleData()。

 

商务报表HTML文件在包 cn.blackberry.bi.web.sample内, bar.html, line.html, pie.html。每个报表HTML通过调用JavaScript 图形API来实现报表。这些JS图形API在包cn.blackberry.bi.web.js内。

if (doc.getContentType().equals(BIDocument.CONTENTTYPE_HTML)) {

    String htmlContent = this.doc.getHtmlContent();

    browserField.displayContent(htmlContent, "local:///");

} else if (doc.getContentType().equals(BIDocument.CONTENTTYPE_URL)) {

    String url = this.doc.getURL();

    browserField.requestContent(url);

}