Web标准交流会介绍PhoneGap主题
最近,Web标准交流会北京站组织了以 PhoneGap为主题的技术沙龙,邀请了来自Adobe的技术布道师董龙飞和新浪的前端工程师董玉伟介绍了跨平添移动开发工具PhoneGap。
董龙飞对PhoneGap的来龙去脉做了总体的介绍,很多开发者已经使用HTML5、CSS3等最新技术做Web应用开发,也有不少开发者涉足移动开发,包括Android的Java编程、iOS的Obejct-C编程等。在2008年,旧金山,针对iPhone的开发者会议上,几位与会者希望通过JavaScript调用iPhone的本地特性,就在一天之内做了一个最基本的PhoneGap想法原型,并逐渐获得的社区的认可,扩展到了其他移动平台,如Android。后来,PhoneGap被Adobe收购,并被贡献给了Apache基金会,开始名为“CallBack”,后来改为“Cordova”,但两者不完全一样。Cordova是其中最核心的一部分,PhoneGap还包括了外部工具等。
借助PhoneGap,Web开发者可以把已有的Web应用打包成移动平台上的本地应用或者应用商店里的App,让用户直接下载安装,甚至支持BlackBerry、Windows Phone等应用格式。在开发移动应用时,开发者经常需要利用平台本身的一些特性,比如需要访问手机通讯录,或者GPS传感器信息等,PhoneGap提供了一些方便的JavaScript接口,帮助开发者直接调用移动平台的本地特性。不同的移动设备支持的特性并不相同,或者有时会遇到CPU密集性的技术需求,此时JavasSript代码并不合适,开发者可能想用本地的编程语言来写程序,然后再用JavaScript来调用,提高整个应用的性能。PhoneGap支持插件机制,开发者可以使用本地语言来编写程序,然后通过Javascript集成,由PhoneGap打包成App。总的来说,PhoneGap的特性包括:将HTML/JavaScript代码打包成本地App,帮助开发者部署到各种平台上,并提供了访问移动应用本地特性的接口,同时支持多语言混合的插件机制。
但PhoneGap不是JavaScript框架,开发者需要借助其他JS框架,Phone不提供IDE环境,由开发者自己选择。
如果想把Web应用打包成各种移动平台的App,开发者可以利用在线的PhoneGap Build,自动生成各种应用格式,并发布到移动平台的网上商店中。Phone Build针对开源免费的Web应用也是免费的。董龙飞还举例详细介绍了PhoneGap的内部实现机制和应用的调用方式。
新浪高级工程师董玉伟则探讨了PhoneGap插件扩展机制,他先后介绍了PhoneGap的插件实现原理、编程技巧等。
插件之间的通信通过postMessage和onMessage接口来显示,在调用系统接口,设计到用户隐私数据时应该请求用户授权。
他还分享了自己的移动开发经验,包括:启动时不要加载渲染大量html(使用JS渲染大数据更快);谨慎使用Scroll,等系统进化到支持Fixed定位。
PhoneGap现已完全支持Windows Phone 7所有的原生功能,其支持力度达到了iOS与Android的水平。
目前,PhoneGap API支持的功能包括:
- Accelerometer——加速计是检测设备在当前方向上所做相对运动变化(增、减量)的运动传感器。加速计可以检测沿X、Y和Z轴的三维运动。加速度数据通过accelerometerSuccess回调函数返回。
- Camera——选择使用摄像头拍照,或从设备相册中获取一张照片。图片以base64编码的字符串或图片URI形式返回。
- Compass——罗盘是一个检测设备方向或朝向的传感器,使用度作为衡量单位,取值范围从0度到359 .99度。通过compassSuccess回调函数返回罗盘朝向数据。
- Connection——Connection对象提供对设备的蜂窝及WiFi连接信息的访问。
- Contacts——提供对设备通讯录数据库的访问。
- Geolocation——Geolocation提供设备的位置信息,例如经度和纬度。位置信息的常见来源包括全球定位系统(GPS),以及通过诸如IP地址、RFID、WiFi和蓝牙的MAC地址、和GSM/CDMA手机ID的网络信号所做的推断。不能保证该API返回的是设备的真实位置信息。这个API是基于W3C Geo location API Specification实现的。有些设备已经提供了对该规范的实现,对于这些设备采用内置实现而非使用PhoneGap的实现。对于没有地理位置支持的设备,PhoneGap的实现应该是完全兼容W3C规范。
- Storage——提供对设备的存储选项的访问。此API基于W3C WEB SQL Database Specification和W3C Web Storage API Specification。有些设备已经提供了对该规范的实现,对于这些设备采用内置实现而非使用PhoneGap的实现。对于没有存储支持的设备,PhoneGap的实现应该是完全兼容W3C规范。
崔康 热情的技术探索者,资深软件工程师,InfoQ编辑,从事企业级Web应用的相关工作,关注性能优化、Web技术、浏览器等领域。