读书人

Worklight 的本土功能开发分析

发布时间: 2012-12-28 10:29:05 作者: rapoo

Worklight 的本地功能开发分析

?

纯 web 模式的局限性

在 Worklight 架构下,纯 web 模式虽然可以像本地应用一样被安装在手机上,但是所提供的服务和传统的网页相比,几乎没有任何的区别,并且因为在分辨率和性能上与台式机相比有明显的差距,所以整体的体验相对于台式机会逊色不少。那么 web 模式应该如何扩展才能体现作为手机应用的优势呢?首先在完成基本的网页显示内容的情况下,需要能够扩展功能,使之可以调用手机本地的功能,诸如相机、定位系统、电话本等等;其次不但可以调用手机的本地功能,当手机和外接设备联系时,还能调用外接设备,比如条形码的检测;最后不同的手机操作系统在实现相同功能时因为策略的不同可能带来不同的效果,比如在打开网页的 PDF 文件上,iPhone 采用直接显示的策略,但是 Android 采取下载的策略,统一的解决这些问题,并且提供良好的提示机制也是手机客户端开发需要考虑的问题。以上这些方向都可以改善纯 web 模式的客户体验,提高手机应用的适用范围。

基于上面的描述,Worklight 中引入了一个定义,称之为混合同化模式(hybrid app mix)。在标准的网页程序中 JavaScript 语言只是负责对页面的元素进行操作,修改网页的树状结构。在 Worklight 混合模式的定义中,又可以按照使用技术的不同分为两类:web 模式下基于 Worklight 客户端 API 的 JavaScript 函数负责从远程的服务器中获得信息,以及同各种不同的后端数据库交互,进行诸如身份验证、数据读取等工作;在 mix 模式下,应用中的 JavaScript 不但可以从事前面的所有工作,还能通过它调用本地的 Java 或者 Object-C 代码,从而完成网页和本地功能的交互工作。在目前提供的技术中,开发者可以使用三种方式来完成这项工作:第一、通过 Worklight 中的 API,调用本地的页面,从而实现本地页面支持的 Java 或者 Object-C 方法,实现对本地功能的调用;第二、使用开源的 Cordova(也就是原有的 PhoneGap)框架,调用已经集成完毕的本地功能;第三、调用或者开发 Cordova 的插件,按照 Cordova 规定的模板,用户可以自行集成本地代码和 JavaScript 文件到 Cordova 框架中,用于调用本地功能。

本文将逐一介绍这三种方式,并且分析各自的利弊。但是需要指出的是,基于 Worklight 进行本地功能的开发,只能对客户端应用起到一定的辅助作用,如果大量的使用自行编辑的本地代码,不但丧失了原来的优势(利用 web 技术提高了开发的效率),反而会因为调用层次的增加带来运行效率低下的问题。所以在开发本地功能时,需要权衡利弊,作出适当的选择。

?

Worklight 提供的模式

在 Worklight 的客户端 API 中,有一个函数可以调用本地已经编写好的页面,通过它可以方便的在不同页面间(网页和本地页面)进行数据的交换。它的函数形式如清单 1 所示:


清单 1. WL.NativePage.show 函数

iOSAndroid网页数据传入利用 JSON 对象将数据传入到 data 中,并且根据 className 确定需要调用的类名称本地页面创建必须继承 Object-C 中 UIViewController 类,然后通过 init 方法实现类的初始化。必须继承 Activity 类,并且需要在 AndroidManifest.xm 文件中声明这个类。本地页面数据接收必须实现 setDataFromWebView 方法,然后将 JSON 对象转化为 NSDictionary 对象,读取其中的 NSString 数据利用系统定义的 Intent 对象,通过 getExtra 方法获取相应的内容,可以是各种基本类型和它们的数组形式本地页面数据输出通过调用 showWebView 方法,将需要传输的数据放入 NSDictionary 对象中,然后返回到页面通过创建的 Intent 对象,将返回的数据放置在 Intent 中,调用 Activity 的 finish 方法,将数据返回到网页上网页数据接收利用回调函数,将得到的 JSON 对象进行解析,获取其中的数据页面转换效果利用 onBeforeShow 和 onAfterShow 来实现页面从网页到本地转换的效果;用 showWebView 来实现页面从本地向网页转换的效果利用 OverridePendingTransition 函数,通过指定不同的参数完成页面由网页到本地页面以及返回的转换效果


Worklight 提供的方法虽然比较灵活,但是需要进行的编码工作比较多。比如需要定义相应的本地类,定义相互的数据接口,并且进行测试,这些工作会延长产品的开发周期,也容易引入错误,从而引起产品的不稳定。如果可以直接调用第三方的开源库,这样就可以减少本地功能的开发周期,并且获得稳定的代码表现和良好的代码维护。Cordova 作为 PhoneGap 的后续开源框架就提供了相应的功能。

?

Cordova 支持的功能

Worklight 本身集成了 Cordova 的相应功能,在使用时需要注意的问题是,系统本身集成了 Cordova 的 1.6.1 版本,所以参考相应的 API 文档说明时,需要确定具体的版本。

Cordova 支持的功能可以分为十三类,对于常用的手机功能均有涉及,

读书人网 >移动开发

热点推荐