管理iPhone应用程序的在线和离线模式

3
我陷入了困境,因为我需要离线管理我的应用程序。首次从网络服务获取所有配置文件数据并将其路径存储到sqlite中,现在我在更新这些数据时遇到了问题,例如如果图像被更改,我该如何通知我的应用程序? 我在谷歌上搜索,唯一的解决方案是在记录更新时向应用程序发送推送通知。如果用户不允许推送通知怎么办?
是否有其他解决方案来管理应用程序的离线操作,并仅在在线数据库更改记录时进行更新?

我不太明白您的全部要求,以下是我理解后的解决方案:
  • 在一定时间间隔内使用上次响应的日期和时间调用API,API仅响应更改或新增的数据。
- Ujesh
如何将多个API存储在队列中,在应用程序联机时发送请求。 - Sree
我在答案部分更新了完整的流程。 - Ujesh
4个回答

3

在应用程序中实现离线模式

  • 在所有表中添加一个额外的列data_status,表示本地数据库中输入的数据是在线模式还是离线模式。1表示在线,0表示离线。
  • 定期使用上次响应日期和时间调用API(如果需要频繁更新数据,则调用;否则只在需要时调用),API仅响应已更改或新增的数据。

当应用程序在线时

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

当应用程序离线时

  • 检查应用程序是否离线,然后跳过API调用功能,并从本地数据库中获取数据。
  • 现在,当对数据执行操作(如更新插入)时,将该行数据_status = 0。
  • 当互联网恢复时,请检查本地数据库中的数据状态为0的数据,并根据每个数据逐个调用web服务,在每个API成功之后将data_status = 1并在本地数据库中更新行。

谢谢


谢谢理论家...它工作得很好。 - Sree
@Sree 接受答案并点赞,这样其他人就可以知道了。如果有任何漏洞,请更新。 - Ujesh

1

无需更改您(应用程序)的任何内容,您的服务器人员可以处理此流程。每当上传新图像时,将生成一个新的URL,您将用于特定对象。您可以在本地替换它(简单地更新现有数据)。


1
我建议根据时间戳和唯一的用户ID来命名图片名称,如下所示。
ImageName = yourUserId_timestamp.(111_1234567).

所以图片名称始终应该是唯一的。因此,当您从服务器获取数据时,请首先检查图像是否已经存在于数据库中。如果不存在,则使用userId更新图像名称并存储它。如果已存在,则不进行任何操作。
谢谢。

@sree,如果你需要帮助,请告诉我。 - Jatin Patel - JP

0

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


谢谢,我需要检查服务器上的版本号是否已更新。如果没有更新,则调用API。 - Sree

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接