我开发了一个应用程序。我的应用程序收集用户的反馈。当网络不可用时,该数据将保存在本地数据库中。但是,一旦网络可用,它将自动与中央数据库同步。
但是,我在这里遇到了一些问题。如果我保存数据库&将我的应用程序发送到后台,一旦网络可用,它就必须自动与中央数据库进行同步。怎么做?
我正在使用Reachability类来检查网络可用性。
答案 0 :(得分:1)
你不能在iPhone上做到这一点。您的应用程序将在几秒钟后停止存在(一旦应用程序移至后台)。
我认为所有应用程序都需要5秒钟,有些应用需要更长时间才能使用10分钟。
PS:除非,您将应用标记为导航或音乐应用,它可以在理论上永久保留在后台。但我怀疑反馈应用程序是否可以在具有此类权限的appstore上获得批准。
答案 1 :(得分:1)
目前,当网络可用时,您的应用无法“唤醒”。如果用户在没有网络连接的情况下退出您的应用,则在他们自愿打开您的应用之前您无法执行任何操作。
但是,您可以使用UILocalNotification提示他们这样做。如果您的应用程序正在退出,并且您有一些数据等待上传,您可以安排在4小时内发布通知(或任何合理的时间)。
如果用户在通知时间之前打开应用程序并且您可以上传数据,则可以取消通知,并且没有人知道它已安排。
如果用户未打开该应用,则会显示通知,并说出“您的手机上有数据尚未上传的数据。”连接到Internet并启动MyAwesomeApp以同步您的数据。 “
答案 2 :(得分:0)
在已保存的数据库中保留一个附加列,以便成功将数据上传到服务器。在写入数据但尚未上载时设置此项。成功上传后,清除该值。当您的应用程序到达前台时,您可以检查此值,并让它上传任何未清除此列的数据。当您的应用程序正在运行时,您可以设置适当间隔的计时器以重新检查可访问性,如果成功,则尝试上载。只有在成功写入数据时清除您的标记,并确保您的服务器不会尝试处理部分上传(想想有人试图在地铁或火车上进行此操作,进出连接)。