2

我希望这个问题属于这里。我正在为客户开发一个 Web 应用程序。它涉及为商人创建约会/报价并需要一些建议。

基本上有些产品可以添加到在 webapp 上创建的报价中。我希望能够从智能手机的移动应用程序上选择报价并填写报价。

我面临的问题是,因为可能并不总是有互联网连接,我需要在设备上离线存储报价数据,以便在有互联网时可以同步。

以下是使用移动应用程序的过程:

  1. 用户从 Web 应用程序获取约会并将其存储(最好在数据库中)
  2. 即使没有连接,用户也可以填写约会报价。
  3. 用户保存报价
  4. 移动应用程序自动向 Web 应用程序发送新报价(如果已连接)
  5. 当互联网可用时,用户手动同步数据

Web 应用程序负责创建约会和管理产品。移动设备存储它自己的产品副本,并且只是对报价的引用。

因此用户可以看到约会列表。选择约会,然后开始添加产品。

约会

约会ID

描述

产品

ID

描述

引用

ID

约会ID

product_id

Web 应用程序是用 PHP 开发的。

我想利用 HTML5 的移动应用程序离线存储,因为我是一名 Web 开发人员,没有时间在这个项目上学习母语(即 Objective-C)。我在几个地方读到 Web SQL 数据库不会继续,所以我不确定我的选择是什么。

也用于思考 HTML5 和 JavaScript 的代码,因此可能使用 jQTouch 或 jQuery Moble。

如果有人对我有任何建议或建议,那就太好了!

4

2 回答 2

2

我有一个离线存储数据的 jQuery Mobile 应用程序。用户在连接时将完成的记录推送到 Web 服务(该应用程序还使用 HTML5 中的离线功能)。这在 Mobile Safari 中使用了 Web SQL(它是 WebKit 和 Opera 中的 SQLite),并且在主要设备(iPad / iPhone)上运行良好,但在桌面上的 Chrome 和 Safari 中也可以正常运行(我没有尝试过 Opera,但是显然它在 Firefox 或 IE 中不起作用)。

几点考虑:

  • 正如您所指出的,Web SQL 的未来有些不确定。您可能希望改为查看 IndexedDB,尽管根据您需要支持 Web SQL 的浏览器而定,可能就可以了。
  • 本地数据库大小是有限的,但是如果您“清除”标记为完整的数据并经常提交(我认为它是每 db 5MB 左右,相当可观),您应该没问题。
  • 我的应用程序通过 ajax 与 SOAP Web 服务对话,我们都在同一个域中。如果域会有所不同,您可能需要查看 CORS / 反向代理等
  • 我不喜欢在 Javascript 中摆弄 XML,但是XMLObjectifier使这方面的事情变得更容易(将 XML 解析为 JSON 对象)
于 2011-07-14T14:31:25.177 回答
0

PhoneGap 应用程序使用 HTML5 和 CSS3 进行渲染,使用 JavaScript 进行逻辑

这意味着您有两种可能性,您的应用程序中的客户数据是否意味着在没有应用程序更新的情况下进行修改。由于我无法根据您在问题中提供的信息确定这一点,因此我将详细说明每种情况的答案。


如果您的客户的数据不需要更新(无需更新您的应用程序)

在这种情况下,您认为客户的数据是静态的。此数据的出处无关紧要,因为您将在分发应用程序之前将其包含在您的应用程序数据中,就像任何其他文本或图像(或其他资产)一样。这意味着您的客户列表将与您的应用程序相关联,并且修改它们将需要更新您的应用程序。

从技术上讲,这意味着您只需将客户的数据添加为静态文件。它可以是 HTML5 代码,位于您自己的应用程序代码中间,也可以是任何类型的文件(例如 Json),您的应用程序必须解析和显示(使用 JavaScript)。

但是,如果您选择 HTML5 解决方案,出于可维护性目的(可能还有其他原因),您可能希望将来自客户端的内容与来自应用程序的内容分开。为此,请创建一个包含客户端数据的 HTML5/CSS3 页面,并使用该方法将其包含在应用程序的页面中(或者您可以使用此答案中提到的pager.js库)。

附带说明:在当前情况下,下一个方法的性能将与此方法一样好;缺点是有点复杂。

如果您的客户的数据需要在没有更新您的应用程序的情况下更新

在这种情况下,您认为客户的数据是动态的。数据的来源是相关的,因为只有获取数据的方法将存储在您的应用程序中:其余的将由执行您的应用程序的设备完成。虽然实现起来更复杂,但此方法的优点是允许不断更新数据,而无需更新应用程序。

从技术上讲,这意味着您将使用 HTML5/CSS3 描述您的应用程序布局和(图形)设计,并且您将使用 JavaScript 对您的应用程序行为(获取客户端数据、存储、查询、显示等)进行编码。

为此,您需要使用 JavaScript(嵌入在应用程序的 HTML5 文件中)获取客户端信息,然后再次使用 JavaScript 将这些信息存储在PhoneGap Storage中。然后,您的应用程序还需要根据 HTML5/ CSS3文件中描述的布局/设计(可能是您的应用程序中的 HTML5 框架为您的客户端数据逻辑布局,其设计/外观具有 CSS3 id 和类)。

值得注意的是,如果你有一个永远在线的设备,只要你的客户的网站是正常的,你就不需要在你的应用程序中存储列表信息。但是,如果您客户的网站出现故障,或者设备离线,您将需要一个本地存储。

底线

换句话说,如果您的应用程序从不需要 Internet 连接即可工作,那么将列表包含在 HTML5/CSS3 数据中是安全的;否则,您将需要使用 JavaScript/ PhoneGap 存储解决方案,即使它更复杂。

于 2014-05-23T09:47:39.000 回答