自动与中央数据库同步

时间:2012-07-31 19:08:40

标签: iphone ios background-process reachability

我开发了一个应用程序。我的应用程序收集用户的反馈。当网络不可用时,该数据将保存在本地数据库中。但是,一旦网络可用,它将自动与中央数据库同步。

但是,我在这里遇到了一些问题。如果我保存数据库&将我的应用程序发送到后台,一旦网络可用,它就必须自动与中央数据库进行同步。怎么做?

我正在使用Reachability类来检查网络可用性。

3 个答案:

答案 0 :(得分:1)

你不能在iPhone上做到这一点。您的应用程序将在几秒钟后停止存在(一旦应用程序移至后台)。

我认为所有应用程序都需要5秒钟,有些应用需要更长时间才能使用10分钟。

PS:除非,您将应用标记为导航或音乐应用,它可以在理论上永久保留在后台。但我怀疑反馈应用程序是否可以在具有此类权限的appstore上获得批准。

答案 1 :(得分:1)

目前,当网络可用时,您的应用无法“唤醒”。如果用户在没有网络连接的情况下退出您的应用,则在他们自愿打开您的应用之前您无法执行任何操作。

但是,您可以使用UILocalNotification提示他们这样做。如果您的应用程序正在退出,并且您有一些数据等待上传,您可以安排在4小时内发布通知(或任何合理的时间)。

如果用户在通知时间之前打开应用程序并且您可以上传数据,则可以取消通知,并且没有人知道它已安排。

如果用户未打开该应用,则会显示通知,并说出“您的手机上有数据尚未上传的数据。”连接到Internet并启动MyAwesomeApp以同步您的数据。 “

答案 2 :(得分:0)

在已保存的数据库中保留一个附加列,以便成功将数据上传到服务器。在写入数据但尚未上载时设置此项。成功上传后,清除该值。当您的应用程序到达前台时,您可以检查此值,并让它上传任何未清除此列的数据。当您的应用程序正在运行时,您可以设置适当间隔的计时器以重新检查可访问性,如果成功,则尝试上载。只有在成功写入数据时清除您的标记,并确保您的服务器不会尝试处理部分上传(想想有人试图在地铁或火车上进行此操作,进出连接)。