5

假设我们有一个与 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 个请求,Apple 会拒绝该应用程序吗?

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

我们试图避免使用推送通知,因为这些请求是一种低级任务,用户不必明确参与。

4

1 回答 1

2

我建议您尝试长轮询策略,该策略已在之前的线程中讨论过:objective-C 中的长轮询。还可以查看这个 基于 TCP 的 RPC 服务器(Erlang 或类似的东西?),用于 iOS/Android 应用程序通信

于 2013-04-10T09:21:48.490 回答