【问题标题】:Manage iPhone app both offline and online离线和在线管理 iPhone 应用程序
【发布时间】:2016-03-25 19:21:43
【问题描述】:

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

有没有其他解决方案可以离线管理应用程序并仅在从在线数据库更改记录时更新?

【问题讨论】:

标签: ios database sqlite


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    有办法处理这种情况:

    1. 使用推送通知是这种情况的最佳解决方案。
    2. 通过允许用户从应用设置中设置时间间隔来定期查询服务器。
    3. 每当应用从后台转到前台时查询服务器。

    【讨论】:

    • 如果用户不允许推送通知?我在问题中提到了
    • @AliMajeed 然后您可以使用点号从服务器获取更新。 3. 即使您可以使用 Facebook 应用程序,它也可以这样处理数据。只需尝试关闭 Facebook 的通知并运行应用程序即可获得更新。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      有一种方式最受欢迎,因为大多数人都喜欢

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

      现在您必须决定何时向服务器查询此过程

      1) 每次第一次加载应用程序。 (didFinishLaunchingWithOptions)。
      2) 通过让用户能够从应用设置或其他地方设置时间间隔来定期查询服务器。
      3) 每当应用从backgroundforeground 时查询服务器。

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        • 2010-10-14
        相关资源
        最近更新 更多