约翰,
那么它听起来像你有一些工作在你前面!当您有一个现有的基于Web的应用程序时,有两种基本方法可让您的应用程序在任何特定设备上可用:您可以:(1)编写一个本机应用程序,实现您想要支持的每个设备所需的功能,或者(2)为现有应用程序编写基于Web的“包装器”,并将内容以HTML/CSS的形式提供给相同的设备。
选项1:建立你想支持
至于第一种方法的每个平台的原生应用,好处是可以很大。通过使用每个设备的原生框架,您可以充分利用每个设备的最佳功能和灵活性。您的应用视图也可以呈现得更快,因为您将从服务器获取的数据是用于填充视图的数据(即,根本不需要加载图像,HTML模板或CSS文件)。
这种方法的缺点是它固有地要求每个设备都有自己的应用程序。因此,如果您支持Web应用程序,iPhone应用程序,Android应用程序和黑莓应用程序,这意味着您有4个完全独立的代码库来维护。如果你在你的网络应用程序中添加某种新功能(你大概会在某些时候会这样做),你还必须在另外三个独立的代码库中实现这个新功能。鉴于这些设备可能具有不同的交互模式,这可能会带来挑战。此处的另一个缺点可能是分发(即,您可能需要根据您想要分发应用程序的方式,针对iPhone应用商店进行审查过程)。这也意味着你必须学习的数量要大得多,因为每个设备都有自己的API集和编程“哲学”。
选项2:编写你的应用程序基于Web的“包装”(也许使用一个库)
这种方法也有益处很大。首先,如果您使用的框架如PhoneGap或Sencha Touch或Rhomobile,最大的好处是您理论上只编写一次“移动应用程序”代码,并且可以在该框架支持的每个设备上运行。与为三个平台编写原生应用程序相比,这是少得多的工作。
这里的缺点如下。这种方法作为设备浏览器中的网站运行,因此您无法访问每个设备的所有功能。 iOS和Android API中的所有优秀内容都将无法提供给您。您在本地存储方面的限制也有所限制,但这可能不是您给予您的网络应用程序非常关注的问题。另一个缺点是用这种方式将会有更多的带宽需求,因为您提供的所有HTML,图像和CSS都是原本应用不需要的。根据用户的数量和页面的复杂程度,这可能对您而言非常重要。这里的另一个缺点是你不能全屏(例如在Mobile Safari中iPhone的底部总是有一个工具栏)。
普遍关注
一两件事,有关我读你的问题是你的要求清单。重现功能并连接到远程数据存储是您可以使用本机和基于Web的移动应用程序完成的任务。但是“保留拖放功能”不是。例如,使用iPhone,您可以使用UITableViewCell中的句柄来提供重新排列列表的方式,但全插入式拖放并非真正适合移动设备的用户交互模型。你可能不得不重新考虑这一点。
“提供与Web应用程序相当或更好的丰富用户体验”的要求也有点令人不安。虽然基于手机的应用程序可以真正简化方法来获取和操作数据,但请记住,您正在设计一个几平方英寸的屏幕。用21英寸高清宽屏显示器以有组织的方式提供同样宽度的信息实际上是不可能的。
请记住,您正在为移动设计,因此您希望利用可用的平台但请记住,你正在处理小屏幕和有限的交互方法(触摸,滑动和手势)
我的建议是,如果这是你第一次在这,你想支持所有这些设备,并且您已经有了网络方面的经验,我会建议您采用方案2并使用上述框架之一。这将是最简单的方式开始,并且您不会有任何截然不同的概念,必须学习。
祝你好运!