サーバーから取得したデータを利用するアプリを使用しています。フェッチ ロジックはかなり堅牢で、フォールト トレラントです。ほとんどの接続エラーは自動的に再試行され、通常はうまく機能します。ただし、非常にまれな状況 (ネットワーク レイテンシとバックエンド データベースに関連する競合状態を含む) では、アプリ/サーバーが回復できない一貫性のない状態になる可能性があります。
私がやりたいのは、この状態のときに、ユーザーが次にホームボタンを押したときに(バックグラウンドに移動するのではなく)単純に終了するアプリを用意することです。アプリが再起動されると、サーバーと再同期され、ユーザーは自分の好きなように行動します。
私の最初の考えは、矛盾した状態が検出されたときに applicationDidEnterBackground から exit() を呼び出すことです。この種の経験がある人、または条件付きでバックグラウンドを無効にする別の方法を知っている人はいますか? これは嫌われていると思いますが、Apple が exit() の使用を検出してアプリを明示的に拒否した経験がある人はいますか? UIApplicationExitsOnSuspend = YES は、マルチタスクが他の 99.999% の時間で期待どおりに動作する必要があるため、オプションではありません。
注:詳細が不足していることをお詫びします。理想的な解決策は、一貫性のない状態から回復する方法を考え出すことです。そうする方法を見つけるのに多くの時間と労力が費やされたと私が言うとき、私を信じてください.