Iphone 自动与中央数据库同步

Iphone 自动与中央数据库同步,iphone,ios,background-process,reachability,Iphone,Ios,Background Process,Reachability,我开发了一个应用程序。我的应用程序接受用户的反馈。当网络不可用时,该数据将保存在本地数据库中。但是,一旦网络可用,它将自动与中央数据库同步 但是,我这里有一些问题。如果我保存数据库并将应用程序发送到后台,一旦网络可用,它就必须自动与中央数据库同步。怎么做 我正在使用可达性类来检查网络可用性。你不能在iPhone上这样做。几秒钟后,你的应用程序就不存在了(一旦应用程序移到后台) 我相信所有的应用程序都需要5秒,有些应用程序需要10分钟的后台时间 PS:除非你将你的应用程序标记为导航或音乐应用程序,

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

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


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

你不能在iPhone上这样做。几秒钟后,你的应用程序就不存在了(一旦应用程序移到后台)

我相信所有的应用程序都需要5秒,有些应用程序需要10分钟的后台时间


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

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

目前,当网络可用时,无法让您的应用程序“唤醒”。如果用户在没有网络连接的情况下退出你的应用程序,在他们自愿打开你的应用程序之前,你无法做任何事情

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

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


如果用户未打开应用程序,则会出现通知,并说:“您手机上有数据,但您已经有一段时间没有上传了。连接到Internet并启动MyAwesomeApp以同步您的数据。”

@Owen。。我知道如何处理数据是否与中央数据库同步。但我的问题不是这个。请再次参考该问题。如果没有时间限制数据何时到达,您可以真正等待,直到您再次激活。当然,如果用户从未重新激活您的应用程序,则无法保证交付。@benzado。。如果我使用UILocalNotification,每次网络状态改变时,这些通知都会被触发&应用程序会受到大量本地通知的干扰。不管怎样,我喜欢这个主意。如果该特定用户忽略该通知,则该通知将一次又一次地被触发,因为当可访问性更改时,可访问性类
kReachabilityChangedNotification
被多次触发。@tarunima您误解了。当你的应用程序退出时,你只安排一次通知;当你的应用程序打开时,你可以取消它。除非用户在一天左右的时间内没有打开你的应用程序,否则不会看到通知。