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 秒ごとに 1 つのリクエストを 6 つのリクエストに制限するというポーリング戦略を実装することを決定した場合、Apple はアプリを拒否できますか?
残念ながら、長いポーリング戦略に対するサーバーのサポートはありません (私たちの管理下にはありません)。サーバーは、リクエストごとにステータス JSON を返すだけです。
これらのリクエストは一種の低レベルのタスクであり、ユーザーが明示的に関与する必要がないため、プッシュ通知の使用を避けようとしています。