3

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

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

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

4

3 回答 3

1

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

我相信所有应用程序都需要 5 秒,而某些请求更多后台时间的应用程序需要 10 分钟。

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

于 2012-07-31T19:13:47.130 回答
1

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

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

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

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

于 2012-07-31T21:23:11.717 回答
0

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

于 2012-07-31T21:08:00.273 回答