ユーザーが入力したフォーム データをサーバーに送信するエンタープライズ アプリに取り組んでいます。ユーザーが [保存] をタップすると、アプリはすぐにデータの送信を試みます。データの送信に問題がある場合 (ネットワーク接続がない場合など)、X 分後に再試行し、データが正常に送信されるまで定期的に再試行します。通常、要求はそれほど大きくなく、長時間実行されることもありませんが、ユーザーはネットワーク アクセスのない環境にいることが多いため、再試行が重要です。
アプリの実行中に API リクエストを再試行するのは簡単ですが、アプリがバックグラウンドにあるときに定期的に再試行し続けることが理想的です。iOS のバックグラウンド実行機能で達成できる最高のものは何ですか? ここに私が見るいくつかのオプションがあります:
beginBackgroundTaskWithExpirationHandler:
追加時間の 1 回限りのリクエストを行うために使用します。これにより、基本的に、アプリがバックグラウンドに移行した後にデータを送信するための追加の試行が 1 回行われますが、試行が繰り返されることはありません。- 「バックグラウンド フェッチ」機能を使用し、バックグラウンド フェッチのためにアプリが起動されたときに、新しいデータをサーバーに送信しようとします。理論的には良さそうですが、これはバックグラウンド フェッチ機能の悪用ではないでしょうか?
これらのいずれかが私の最良の選択肢ですか?私が見逃している別のアプローチはありますか?
これは iOS と Android の実装を備えた Xamarin アプリですが、それが私の質問に大きな影響を与えるとは思いません。必要に応じて iOS 固有のコードを書くことができます。