在离线模式下提高移动aps客户端-服务器的通信效率和数据可用性



我的问题是如何存储在线接收的数据,这些数据在移动设备离线和/或重新启动后仍然可以处理。我使用AngularJS和Ionic(PhoneGap)来构建应用程序。但我的问题并没有明确地解决这些技术。

最佳实践、模式或算法对我甚至一些有用的文章或关键词都很有帮助。

1) 最简单的挑战是让我的应用程序更用户友好,不仅在设备处于联机模式,而且在脱机模式下都可以使用它的功能。在我的情况下,这意味着我必须使最后提取的在线数据可供以后使用(在设备离线时以及在重新启动设备后!)。

2) 更困难的是,当设备重新连接到互联网时,仅通过同步服务器端更改的数据来降低通信成本。

3) 实体也可以在设备离线时在客户端生成,并且它们也必须同步到服务器。没有潜在的冲突风险,因为用户不共享具有写访问权限的实体。

4) 我使用谷歌和苹果的推送服务向设备通知更新的实体版本,这些版本应该在客户端进行更新。因此不需要进行民意调查。

客户端技术:Javascript、AngularJS Framework、Ionic Framework、SQLite(WebSQL)或IndexedDB、PhoneGap(Cordova)

服务器端技术:Java EE、JPA、MySQL

数据格式和通信:REST/http上的JSON,谷歌和苹果的推送服务,用于服务器到客户端的消息传递

1)将所需数据存储在本地SQLite数据库中,并在应用程序启动/恢复时将其取出。


2) 在MySQL数据库中,您需要一个在更新/更改/创建内容时创建新条目的表。您需要存储一个id和一个时间戳(如果内容被删除,可能是一个布尔值)。

在设备上,您可以向服务器请求发送该表中的数据,并将其与本地存储的数据进行比较。如果有新的id或时间戳发生了更改,则发出新的请求以获取更新的数据。


3) 使用未与服务器同步的标志在本地存储创建的数据。当设备再次联机时,检查未同步的标志,并将带有标识符的数据发送到服务器,以了解数据来自哪个设备以及保存在哪里


4) 参见2)

你可以制作一个Java脚本,每隔x分钟检查一次更新的条目,并用它发送一个自动推送通知。你需要的是两个表,一个表有最新的更新,另一个表包含设备获取的更新(只有id和时间戳,而不是所有数据)。


我希望这会有所帮助,如果我有新的想法,我会更新这个答案。

最新更新