我的公司建立了自己的项目管理Web应用程序。这就像类固醇的大本营。该应用程序的核心功能是:
我希望将移动应用程序构建为Web应用程序的扩展。移动应用程序必须:
鉴于上述要求,我应该如何处理这个移动应用程序的开发?我公司大约有20个智能手机用户:8个iphone,7个机器人和5个黑莓。
我听说像Phonegap这样的开发框架可以让你用HTML,Javascript和CSS开发。然后,该软件跨黑莓,iphone和机器人跨平台工作。如果我是平均/略高于平均水平的程序员,我是否能够使用符合上述要求的PhoneGap(或其他x平台开发框架)构建高质量的跨平台移动应用程序?
或者我应该独立构建每个iphone,droid和blackberry应用程序吗?
最好的方法是什么?有什么权衡?
答案 0 :(得分:3)
约翰,
嗯,听起来你已经有了一些工作在你前面!当您拥有现有的基于Web的应用程序时,有两种基本方法可以让您的应用程序在任何特定设备上可用:您可以(1)编写一个本机应用程序,为您想要支持的每个设备实现所需的功能,或者您可以(2)为现有应用编写基于Web的“包装器”,并将内容作为HTML / CSS提供给相同的设备。
选项1:为您要支持的每个平台构建本机应用
至于第一种方法,好处可能很大。通过使用每个设备的本机框架,您可以拥有完整的能力和灵活性,以充分利用每个设备的最佳功能。您的应用程序的视图也可以更快地呈现,因为您从服务器获取的所有内容都是用于填充视图的数据(即,您根本不必加载图像,HTML模板或CSS文件)。
这种方法的缺点是它本身要求每个设备都有自己的应用程序。因此,如果您支持Web应用程序,iPhone应用程序,Android应用程序和Blackberry应用程序,这意味着您需要维护4个完全独立的代码库。如果您在Web应用程序中添加某种新功能(您可能会在某些时候添加),您还必须在其他三个独立的代码库中实现该新功能。鉴于这些设备可以具有不同的交互模型,这可能构成挑战。这里的另一个缺点可能是分发(即,您可能需要通过iPhone应用程序商店的审核流程,具体取决于您希望如何分发您的应用程序)。这也意味着您需要学习的金额要大得多,因为每个设备都有自己的API集和编程“哲学”。
选项2:为您的应用编写基于网络的“包装器”(可能使用库)
这种方法也有很多好处。首先,如果您使用PhoneGap或Sencha Touch或Rhomobile这样的框架,最大的好处是理论上您可以编写一次“移动应用”代码,它可以在每个设备上运行框架支持。与为三个平台编写本机应用程序相比,这项工作要少得多。
这里的缺点如下。此方法作为设备浏览器中的网站运行,因此您无法访问每个设备的所有功能。根据定义,iOS和Android API中的所有优秀内容都无法使用。对于本地存储,您在这方面也有所限制,但对于您的Web应用程序,这可能不是您的一个大问题。另一个缺点是,您的服务器需要更多的带宽,因为您提供的是本机应用程序无需使用的所有HTML,图像和CSS。根据用户数量和页面的复杂程度,这对您来说可能很重要。另一个缺点是你无法全屏显示(例如在Mobile Safari中使用iPhone,底部总是有一个工具栏)。
普遍关注
关注我阅读问题的一件事是你的要求清单。再现功能和连接到远程数据存储是您可以使用本机和基于Web的移动应用程序绝对可以做的事情。但“保留拖拉功能”并非如此。例如,使用iPhone,您可以使用UITableViewCell中的句柄来提供重新排序列表的方法,但是完全拖放并不适合移动设备的用户交互模型。你可能不得不重新思考这个。
“提供与Web应用程序等效或更好的丰富用户体验”的要求也有点令人不安。虽然基于手机的应用程序可以真正简化获取和操作数据的方法,但请记住,您正在设计一个几平方英寸的屏幕。与21英寸高清宽屏显示器相比,在物理上不可能以有组织的方式提供相同的信息。
请记住,您在这里设计移动设备,因此您希望利用可用的平台,但请记住您正在处理小屏幕和有限的交互方法(触摸,滑动和手势)。
我的建议是,如果这是您第一次参加此活动,您希望支持所有这些设备,并且您已经拥有网络使用经验,我建议您使用选项2并使用一个上述框架。这将是最简单的开始方式,你不必学习任何完全不同的概念。
祝你好运!答案 1 :(得分:0)
另外评论了Neal L上面发布的内容,使用Rhomobile,您可以访问设备本机功能以及拖放视图。
此处有几个培训和示例视频:http://rhomobile.com/webinars/