智能设备变得越来越普及,从三岁大的小孩到祖父祖母辈都能顺利使用,信息从没像如此这般的容易传递到每个人的手中,开发者们普遍觉得应该慎重考虑下移动开发策略,是web的、混合的、还是native的更好。
这其实是一个老生常谈的话题,本文将从Android、iOS和WindowsPhone等流行的操作系统出发,给出web、hybrid还是native的开发建议。
一些关键的因素
开发应用最重要的目的是要将应用的功能和最好的体验都传递给用户,因此,作为开发者,针对以下问题,仔细问问自己的团队:
- 你预期的目标用户量是多少?
- 你是面对本地市场还是海外市场?那些市场里的目标用户都使用什么设备?
- 谁是你的目标用户(是企业内部的app还是面向公众的app)?他们的主要需求是什么(地图浏览、高级分 析,还是外业采集)?
- 你的用户需要离线使用app吗?
- 你的开发团队具备什么样的技能?
- 需要什么样的数据和服务来支撑应用?
- 谁是数据的拥有者和管理员?你有权利在需要的情况下获取数据吗(比如创建离线的数据源)?
- 有设备集成的需求吗,比如使用设备的GPS、罗盘、多媒体、日历、联系人、短信、消息通知等?
策略总结
- Native:Native形式的应用最适合用来进行设备集成,并且可实现拿来即用的离线工作流,但它需要开发团队具备较好的Native开发技能,可以使用ArcGIS Runtime SDK for Android/iOS/Windows Phone来创建Native的应用;
- Hybrid:Hybrid形式的应用需要使用到一些Native的组件以及Web开发内容(如Html、JavaScript和CSS),通常有多种方法实现,最简单的方式是在native的app中加入一个web控件,从web上加载内容;更多高级的方式包括使用各种框架(如PhoneGap、Appcelerator Titanium等)。可以使用ArcGIS JavaScript API和Runtime SDKs来开发混合型的应用;
- Web:web应用程序是指使用HTML、JavaScript和CSS等技术开发的,数据和功能都托管在服务器端,使用手机的web浏览器来打开的应用。如果你不知道自己的目标用户会使用什么设备,并且你希望覆盖尽可能多的用户群体,那么开发web的应用非常适合。可以使用Esri的ArcGIS JavaScript API来实现。
以下表格提供了另外一些比较因素:
移动开发策略的选择(通用标准)
Web型 | Hybrid型 | Native型 | 备注 | |
用户喜欢什么设备? | 只需要目标设备具备浏览器 | 需要考虑到设备的操作系统及web内容 | 取决于考虑到操作系统 | 不同地区的用户使用的主流设备差别很大 |
开发团队具备什么技能? | HTML、JavaScript及CSS | HTML、JavaScript、CSS,及会使用hybrid的框架 | 需具备在每个平台上开发native应用的基础(如Objective-C、java、.Net等) |
|
通过什么方式分发应用? | 无需通过商店分发 | 需通过商店分发 |
| |
设备集成能力 | 取决于html5的能力 | 取决于开发方式和使用的框架 | 可以使用本地所有的资源(如GPS、罗盘、日历、多媒体等等) | 一些混合型开发框架提供封装的、调用底层本地API的接口 |
升级维护成本 | 低,更新之后可立即呈现 | 需为每种设备类型做更新 |
|
移动开发策略的选择(从ArcGIS的角度)
考虑因素 | Web型 | Hybrid型 | Native型 | 备注 |
用户是否需要离线使用app | HTML5支持简单的本地存储和一些基础的离线GIS功能** | 使用混合型开发框架可实现本地资源的存储,也可实现离线的GIS功能** | 支持所有的离线存储和GIS功能*** | 使用PhoneGap或Titanium等开发框架开发混合型应用并不如native的简单 |
路径分析和地理编码 | 在线* | 在线* | 离线和在线***,需要ArcGIS for Desktop来制作离线的数据源 |
|
GeoEnrichment | 在线* | 在线* | 在线** | 通过GeoEnrichment可加载丰富的人口和景观专题图 |
分析(几何操作) | 在线* | 在线* | 在线和离线** | 几何操作如切割、缓冲和相交等,以及简化、抽稀、合并等编辑工作流 |
基于模型的分析(GP) | 在线* | 在线* | 在线和离线*** | 先在ArcGIS for Desktop中制作好模型,再发布成GP服务供移动端调用 |
几何网络追踪 | 在线* | 在线* | 在线和离线*** | 使用GP服务可实现 |
高级制图和符号化 | 在线* | 在线* | 在线和离线*** | 包括旋转、偏移、测地符号和军事符号等,如2525C和APP-6B |
大量要素的动画/显示 | 不推荐 | 不推荐 | 可快速、平滑的渲染、显示和导航*** | Native型的app可以支持数以百万计的要素,而web和混合型应用支持的数据量由浏览器等很多因素决定, 通常在1万~10万之间。 |
本地数据文件(如shapefile和imagery)的离线 | 不支持 | 不支持 | 支持*** | 今年夏季的新版本中将提供支持 |
*使用ArcGIS API forJavaScript组件
**使用ArcGIS REST API,开发者需要发送请求和处理响应
***使用ArcGIS Runtime SDKs组件
ArcGIS平台
无论你选择了什么开发方式,ArcGIS平台的魅力都无法抵挡,ArcGISJavaScript API和ArcGIS Runtime SDKs提供了高级的制图和可视化、基于web的编辑和分析、位置分析、地理编码、路径分析和导航等功能,开发者们更是可以通过自定义web services来扩展ArcGIS平台的功能。
实际上,上述开发模式在较高层面上来讲是非常相似的,而使用哪种方式取决于很多因素,用户需要根据自己的业务需求和团队特色来选择,希望上述分析能辅助大家更好的做出决策。