iOS中关于轮询web服务有关任务完成的最佳实践

假设我们有一个与Web服务进行通信的iOS应用程序。 一些请求被委托给另一个Web服务,以便在另一方进行操作时立即返回HTTP 200状态代码:

|iOS app|          |Main service|    |Delegate service|   
    |     request        |                    |
    |------------------->|_      delegate     |_
    |                    | |----------------->| |
    |     HTTP 200       | |     accepted     | |
    |<-------------------|_|<-----------------| |
    |                    |                    | |
    |                    |                    | | 
    |     status?        |                    | |
    |------------------->|_                   | |
    |                    | |                  | |
    |     pending        | |                  | |
    |<-------------------|_|                  | |
    |                    |                    | |
    |                    |      finished      | |
    |                    |<-------------------|_|
    |                    |                    |
    |     status?        |                    |
    |------------------->|_                   |
    |                    | |                  |
    |     finished       | |                  |
    |<-------------------|_|                  |
    |                    |                    |
    |                    |                    |

这些请求可以持续20秒到2分钟,因此我们可以每15-20秒查询一次服务器。

实施这种情况的最佳做法是哪些? 如果我们决定每20秒限制6个请求实施一个请求的轮询策略,苹果是否会拒绝该应用?

不幸的是,没有服务器支持长轮询策略(它不在我们的控制之下)。 服务器只是在每个请求上返回一个状态JSON。

我们试图避免使用推送通知,因为这些请求属于低级别任务,用户无需明确参与。


我建议你尝试一个长轮询策略,这在以前的主题中已经讨论过了:在Ob​​jective-C中进行长轮询。 还可以看看这个基于TCP的RPC服务器(Erlang或类似的东西?),用于iOS / Android应用程序通信

链接地址: http://www.djcxy.com/p/12927.html

上一篇: Best practices in iOS for polling a webservice about task completion

下一篇: Calling external web service on different thread from web service