如何安全有效地轮询API?

How to poll an API safely and efficiently?

我正在 Swift 中开发一个企业 iOS 应用程序,它需要从我们的 API 中提取项目列表并将它们显示在 table 视图中。

该列表可能每天更改几次,但我们的系统不会在数据更改时通知我们。

相反,该应用需要定期轮询,比如每两个小时一次,以获取最新数据并刷新列表。我已经直接使用 NSURLSession 实现了 API 调用。

我的问题是,设置轮询机制的安全有效方式是什么?如果有额外的 API 服务必须轮询,可能以不同的时间间隔轮询怎么办?

可以通过 NSTimer(s) 实现高效的轮询机制。

您可以让多个 NSTimer 从不同的位置获取数据并在不同的调度队列上工作。

然后,当您获取新数据时,您可以使用新对象广播本地通知(类似于 Core Data 模型)。

您的应用程序将能够从任何地方访问检索到的数据。

如果您只需要在一个位置使用数据,您可以使用委托或块式回调模型。

由于您正在开发企业应用并且不需要应用商店批准,您可以'misuse'现有后台模式之一,例如 VoIP 定期轮询您的数据。

不过,我的建议是在另一台服务器上实现一些代码,可以轮询 API 并在有新数据时向设备发送推送通知。这将更容易在 iOS 应用程序中实施,并且在电池寿命和数据流量方面更高效。它也不需要用户在设备重置后重新启动您的应用程序。

您以后还可以轻松地使用同一台服务器检查其他数据源。