iOS和PHP:检查服务器是否有更新/数据库有更改

时间:2015-10-08 15:26:03

标签: php ios objective-c nsfilemanager

背景

我有一个iOS应用程序,它从服务器检索数据并使用NSFileManager将其写入文件,这样用户每次想要访问页面时都不必再从服务器检索数据。他们正在检索的数据可能会不时更改,因此我希望在应用程序文件中更新数据。

我正在为我的后端网络服务使用php页面。

问题

检查数据库中的数据是否已更改以确定我应该更新应用程序中的数据的技术是什么?我能想到的唯一方法就是创建一个php页面,检查数据是否与我存储的数据不同,但这种方法无法将信息保存到应用程序中的文件。我希望在用户与服务器通信时最小化,因为在用户没有服务的情况下,我仍然希望他们能够在应用程序中看到有效的数据。

如果您不完全了解我想要实现的目标,请提出问题。谢谢!

2 个答案:

答案 0 :(得分:2)

如果您想列出最近添加的餐馆,您可以:

  • 将最新餐厅的ID存储在IOS上,并在要检查更新时将其发送到服务器。
    • 如果数据库中的ID不相同,则必须更新您的客户。
    • 如果相同,您只需发送一个304状态(未修改)的响应,这样就可以最大限度地减少交换的数据量。

如果要缓存计算数据,例如前10位用户评级的餐馆,您可以:

  • 存储10个餐馆ID的哈希值,并在您想要检查更新时将其发送到服务器。
  • 服务器重做请求并计算前10个的当前哈希值。
    • 如果哈希值不同,请更新您的客户端
    • 如果哈希值相同,则发送状态为304的响应

NB:如果服务器端的计算成本很高,您可能需要考虑一种更聪明的方法来检测数据更改。

答案 1 :(得分:1)

在这种情况下,您需要在服务器上定义您的版本ID,并将其存储在应用程序中的某个位置。例如,当您在数据库中进行某些更改或从服务器端进行更新时。只需从服务器更改该版本ID即可。

在IOS端,您需要检查该版本ID。如果ios release id低于服务器ID,则在ios本地存储中更新数据库。