【问题标题】:How to update data continuously in application without calling APIs after some interval of time?如何在应用程序中连续更新数据而不在一段时间后调用 API?
【发布时间】:2018-09-03 14:07:25
【问题描述】:

我想知道如何在我的 iOS 应用程序中不断更新数据,而无需一次次调用 API。例如,如果我的 tableView 中有一个产品列表,我想从服务器更新每个产品的价格,因为它会不断变化。

有什么办法,当服务器中的任何值发生变化时,我可以在我的应用程序中检测到来自服务器的任何事件?

提前致谢。

【问题讨论】:

  • 是的,使用推送通知(静音)。
  • 不是专家,但可能会查找“套接字”?
  • 看看像 RXSwift 这样的响应式编程,它实际上可以满足您的目的。但是服务器端也应该是被动的。

标签: ios iphone swift


【解决方案1】:

这些是 iOS 中不断更新来自某些服务器的数据的方法。

  1. 轮询

    轮询是用于在定期或不定期的时间间隔后使用一些POSTGET 请求不断请求服务器的术语。
  2. 推送通知

    Silent Push-Notification 是一种在发生更改时更新数据的方法。在这种类型中,服务器生成并请求 Apple 发送带有一些自定义JSON 的通知。这是一种快速但无保证的方法。因为Push 可能会错过一些时间,也可能会延迟一些时间。
  3. 套接字

    对于这样的问题,Socket 是最可靠和最准确的解决方案,其中应用程序需要在其back-end 发生更改时更新其client-end。因为它始终与服务器保持实时通信,所以您不需要每次都请求服务器。

【讨论】:

    【解决方案2】:

    在您的场景中,您想要更新每个单元格值。使用 Socket 编程,您可以实现这一点。套接字编程有助于快速实时更新日期。

    Socket编程参考:

    https://www.raywenderlich.com/157128/real-time-communication-streams-tutorial-ios

    【讨论】:

    • 这个socket编程可以在objective-c中完成吗?
    【解决方案3】:

    如果您想从服务器获得频繁的“推送”数据,您可以使用或WebSocketsHTTP long polling 之类的技术(通过轮询模拟推送)。

    Socket.IO-Client-Swift 库抽象了这些细节,并为应用程序提供了一个很好的界面。

    使用普通的旧 TCP 套接字是第三种选择。

    我在这里假设您的更新速率大约为每 10 分钟或更快(最多几十秒)。如果您的更新频率较低,例如每小时更新一次,那么 Apple Push (aka remote) notification 应该也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2021-04-02
      • 2018-06-11
      • 2015-03-11
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多