不断从 iOS 应用程序轮询服务器以获取新的 JSON?
Posted
技术标签:
【中文标题】不断从 iOS 应用程序轮询服务器以获取新的 JSON?【英文标题】:Constantly poll server for new JSON from iOS app? 【发布时间】:2013-10-17 01:47:19 【问题描述】:我正在尝试编写一个 ios 应用程序,该应用程序将通知用户我通过 API 作为 JSON 信息访问的产品的价格变化。我想要一个后台任务,每隔 n 分钟重复检查一次服务器是否有新的 JSON,并在满足某些条件时向用户发送通知。这样做的正确方法是什么?
【问题讨论】:
可能不是后台任务。你看过 iOS 7 中的后台获取吗?但它不会每 n 分钟获取一次。 您可以从服务器发送推送通知。在这种情况下,服务器将是访问 API 的服务器,而不是您的应用程序。或者,您可以让应用程序在前台检查 API。你是什么意思? 【参考方案1】:正如之前的海报所提到的,这最好在服务器端完成,而不是通过轮询。但是,使用 Apple Push Service 通知客户端设备并不是理想的解决方案。问题是无法保证交付(根据 Apple),您无法确认交付。用户可以拒绝推送通知,如果您发送的通知过多,Apple 可能会拒绝发送通知,等等。您最好使用PubNub
或Pusher
之类的服务,它以可靠的方式向客户端推送通知两者都有 iOS API。它们非常便宜。如果您想重新发明***并省钱,您可以查看它们的工作原理并编写您自己的版本。
您当然可以进行客户端轮询,在这种情况下异步NSOperation
特别适合(它将在后台线程上运行,您可以在事情发生变化时向NSNotificationCenter
发布通知)。您可以了解更多关于如何实现该here。
【讨论】:
【参考方案2】:这效果不好。这是一个可能更好的解决方案:
-
设置轮询 JSON 数据源的服务器。
当数据源发生变化时,使用Apple Push Service通知用户。
收到通知后,启动后台提取会话。
【讨论】:
以上是关于不断从 iOS 应用程序轮询服务器以获取新的 JSON?的主要内容,如果未能解决你的问题,请参考以下文章