离线和在线管理iPhone应用程序

时间:2014-12-09 11:13:42

标签: ios database sqlite

我坚持一点,我也在离线管理我的应用程序..第一次从webservices获取所有数据(图像)并将其路径存储到sqlite中,现在我将int值设为0或1并存储其状态为NSUserDefaults现在我在更新这些图像时面临问题,如果图像被更改,我应如何通知我的应用程序,我在Google上搜索它,只有解决方案是在更新记录时向应用程序发送推送通知。如果用户不允许推送通知怎么办?

是否还有其他解决方案可以离线管理应用,只有在从在线数据库更改记录时才更新?

4 个答案:

答案 0 :(得分:0)

有办法处理这种情况:

  1. 使用推送通知,这是此类情况的最佳解决方案。
  2. 定期查询服务器,让用户能够设置应用程序设置的时间间隔。
  3. 每当应用程序从后台到前台时查询服务器。

答案 1 :(得分:0)

一个想法是使用BackgroundFetch在应用程序内容未运行时更新它。我在我的一个应用程序中使用类似的提取,我在用户打开应用程序之前更新了内容。我正在获取一个小项列表,指出哪个是最新的,哪个不是。然后,在运行时我向用户提供一个选项来手动更新这些项目,但当然你也可以在backgroundfetch中下载所有这些项目。我的应用程序大多数时间都没有网络覆盖,而且当有一些互联网连接时,backgroundFetch将首先更新项目列表。

这里有两个重要的方法需要注册, setMinimumBackgroundFetchInterval: application:performFetchWithCompletionHandler:。您可以在苹果指南中了解有关背景模式的更多信息。

您还可以查看有关此提取功能的优秀教程:http://www.appcoda.com/ios7-background-fetch-programming/

答案 2 :(得分:0)

由于大多数人都喜欢

,因此最受欢迎的方式
  • 在服务器端构建机制,可以发送在特定日期/时间之后更新的图像列表。
  • 在本地跟踪上次同步日期/时间。
  • 在第一次通过任何过去日期的情况下,在服务器上使用上次日期/时间,并检查更新,如果有,则下载更新的图像,否则。

现在,您必须在查询服务器

时决定此过程

1)每次第一次加载应用程序。 (didFinishLaunchingWithOptions) 2)定期查询服务器,让用户能够设置应用程序设置的时间间隔,或者更好的地方 3)只要应用程序来自后台前景,就可以查询服务器。

答案 3 :(得分:0)

您可以定期将数据与服务器同步,例如调用检查图像是否已更改的Web服务然后获取新图像,如果图像未更改,则继续使用旧数据。您可以在服务器端添加布尔值可以告诉您服务器上的数据是否已更新,或者您可以使用时间戳检查此信息,例如上次更新数据时将本地时间与数据更新的服务器时间进行比较。祝你好运!!