【问题标题】:Manage iPhone app both online and offline在线和离线管理 iPhone 应用程序
【发布时间】:2023-03-03 01:35:01
【问题描述】:

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

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

【问题讨论】:

  • 我没有得到您的全部要求,这是我理解的解决方案基础 - 在某个频繁的时间间隔内调用具有最后响应日期和时间的 API,并且 API 仅响应更改或新数据
  • 应用上线时如何在队列中存储多个API发送请求
  • 我在回答部分更新了完整流程

标签: ios iphone sqlite offline


【解决方案1】:

在应用中实现离线模式

  • 在所有表中多加一列data_status,表示数据输入本地数据库是离线还是在线模式。 1 在线,0 离线
  • 在某个频繁的时间间隔内每次使用最后响应日期和时间调用 API(如果需要频繁更新数据,否则在需要时调用),API 仅响应更改或新数据

申请在线时

  • 调用 API 并将数据存储在本地数据库中,data_status = 1 然后将本地数据库中的数据显示在屏幕上
  • 现在,当再次调用具有服务器 API 响应时间和日期的相同 API 时,API 仅响应更改或新数据。

应用离线时

  • 检查应用是否离线,然后跳过 API 调用函数并从本地数据库中获取数据。
  • 现在,当对更新插入等数据执行操作时。使该行 data_status = 0
  • 上网时查看本地数据库中data_status = 0的数据有哪些,并根据该数据一一调用web服务,每个API都成功,使data_status = 1,更新本地数据库中的行。

谢谢

【讨论】:

  • 感谢理论家...它的工作很棒
  • @Sree 接受答案为正确答案并投票,以便其他人可以知道并更新此问题,如果存在任何漏洞
【解决方案2】:

我建议根据timestamp 和唯一的userId 提供图像名称。如下所示。

ImageName = yourUserId_timestamp.(111_1234567).

所以图像名称始终是唯一的。所以当你从服务器获取日期时。首先检查图像是否已经存在于数据库中。如果不是,则在 userId 的帮助下更新图像名称并存储它。如果是则离开它。

谢谢

【讨论】:

  • @sree,如果您需要帮助,请告诉我。
【解决方案3】:

您的(应用程序)方面没有任何改变,您的服务器人员可以处理此流程。每当上传新图像时,都会为特定对象生成一个新 URL。您可以在本地替换它(只需更新现有数据)。

【讨论】:

    【解决方案4】:

    您可以使用 API 来检查 App 中缓存的数据的版本。如果服务器上有更新的版本,那么您必须使用更新的服务器数据更新本地数据。

    【讨论】:

    • 谢谢,我必须检查服务器中的版本号是否更新。如果没有更新调用 api
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2010-10-14
    相关资源
    最近更新 更多