objective-c - 如何构建一个在离线输入数据时同步的应用程序?

标签 objective-c ios database

假设我使用 iphone 应用程序构建了一个待办事项应用程序,并使用某种集中式数据库构建了网络应用程序。如果我在没有互联网连接的情况下在我的 iPhone 上添加待办事项,我显然无法在 Web 应用程序上看到它们。由于离线时无法发出 API 请求,因此数据不在数据库中。

为了防止离线添加的任务丢失,您是否会将它们存储在本地,然后在建立互联网连接后调用 API 来创建这些任务并将它们添加到数据库中?

在 iOS 中究竟如何做到这一点?我只是在本地构建对象吗?你如何让它知道特定任务不在数据库中并且应该调用 API 来完成它们?

最佳答案

您需要将所有数据存储在本地数据库中,然后检查互联网连接是否可用,如果互联网可用,通过调用 API 将数据发送到网络,如果收到,则从本地数据库中删除数据来自服务器的响应。 这种方式在从服务器获得响应后删除你本地数据库的每一行。

对于此实现,您可以:

-  create a database on mobile
-  Register User on Server, After registering client should get a response from server and a timestamp.
-  Save timestamp and register a Pending Intent for 12 / 24 hrs to Start a Background Service that would Sync the Data to Server.
-  In case of no availability of Internet while Service wants to Sync data, we should have a Broadcast Receiver that check for internet connectivity, and as soon as Internet is available it would silently Start Service (Sync Service) in background and send data to Server.
-  Server would again send a response with timestamp, on receiving timestamp we delete our local Database, and repeat step 3. This cycle will keep on repeating.

我认为这应该符合目的。如果要实现这一点,请发表评论。

关于objective-c - 如何构建一个在离线输入数据时同步的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703763/

相关文章:

iphone - 为什么我不能更改 UIButton 上的标签?

ios - 选项卡单击应打开 slider 菜单 objective-c

ios - 具有多个 UIPickerView 和数组的 UIViewController

ios - [[UIDevice currentDevice] systemName] 的可能值;

ios - 抑制 Parse.com ios 通知?

mysql - 学校考勤系统的数据库设计

mysql - 管理数据库增量的最佳通用工具

ios - 核心数据属性类型差异

database - Spring JDBC BeanPropertyRowMapper 是 否 ('Y' ,'N' ) 到 boolean bean 属性

objective-c - 需要使用BOOL*代替BOOL