【问题标题】:How to start app offline and sync when connection is available如何在连接可用时离线启动应用程序并同步
【发布时间】:2019-03-29 15:21:13
【问题描述】:

我正在开发一个在 android 上运行的 Inventory 应用程序。我打算使用 HTML5、JS、pouchdb 和 couchdb。虽然我知道这个应用程序连接到服务器后,可以在没有任何连接的情况下离线工作并稍后同步,但如果没有互联网连接,我该如何启动应用程序?

我尝试使用 android play store 中的一些服务器,但我想避免它。

应用程序应该在没有任何互联网连接的情况下启动。 在本地保存数据。 即使在退出后,数据也应该可用并在互联网连接可用时同步。

【问题讨论】:

  • 请解释你所有的问题,清楚地描述你所有的问题,阅读你上面我回答的cmets,我意识到你没有解释你的所有问题,而只是其中的一部分,不能再产生任何解决方案的答案。

标签: javascript html couchdb offline pouchdb


【解决方案1】:

离线工作,然后与在线服务器同步数据有时可能非常棘手。

场景

在不影响您的用户体验的情况下,最推荐的方法是想知道您的应用可以在哪些场景中运行,如下所示:

  • 您的用户是否需要注册或登录任何服务或帐户?
  • 您的用户数据是否需要事先注册到您的在线服务中,然后用户才能开始在本地使用它?

可能的解决方案

在设计应用的启动方式之前,请尝试回答上述问题。

我的用户需要在开始创建库存之前注册或登录在线帐户

这表示您的用户在第一次启动您的应用时必须有互联网连接。

  1. 如果这是真的,那么您的应用必须在第一次启动时要求登录或 注册

    • 在这种情况下,如果用户第一次启动应用程序时没有连接。您的应用必须在登录屏幕上停止(这是常用流程)
  2. 用户登录后,您必须将从在线服务器检索到的用户数据存储到本地存储中

  3. 当用户下次启动应用时,应用会自动识别并跳过登录/验证屏幕。

  4. 您的应用必须遵循正常的工作流程(创建、编辑、删除库存)

我的用户无需登录即可在我的应用上创建库存

此答案自动表示您的用户数据不需要事先在线注册,然后离线修改,因此此处不需要互联网,包括用户第一次打开应用程序。

  • 在这种情况下,您将开始检查互联网连接,如果有互联网,您将要求用户进行身份验证。
  • 在这种情况下,您的应用必须从其原始工作流程开始,离线创建所有数据,然后,当用户登录时,它会尝试将本地数据与在线存储的数据同步。

TL:DR

在所有这些情况下,您都在寻找Progressive Web App,PWA 是在客户端离线工作的 Web 应用程序。

【讨论】:

  • 您好 Thauan C Santos,这是一个企业应用程序。所以用户必须先登录。为此,应用程序必须先同步,以便将用户表传输到设备。
  • 嗯.. 所以@MohanC 你必须使用我在上面“我的用户需要注册或登录”中解释的工作流程
  • @MohanC 我已经更新了我的答案,看看你能不能看懂。
  • 是的,PWA 必须是这样。
  • 我发现一个有用的工作流程是让 NodeJS 和 PouchDb 与我在 CouchDb 中的主数据库在同一个本地网络上运行。它的作用是接收(通过复制)特别标识的包含 JWT(JSON Web 令牌)的“请求”记录。 NodeJs 代码确认请求的 JWT 真实性和授权,将请求转换为有效的数据插入、更新或删除,然后将其复制回 CouchDb。我设置了复制,以便客户端只接收经过验证的记录,并且只能发送数据操作请求。这也有助于避免某些数据冲突问题。
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
相关资源
最近更新 更多