このアプリケーションのアプローチを再考する必要があると思います。アプリが実行されるデバイスの特性に必ずしも十分な情報が与えられていない、または適切に適合しているとは限らない一連の機能を構築することを決定したようです。
「アプリは n 分ごとに位置情報を取得する」と書いていますが、それは iOS 位置情報サービスの仕組みではありません。アプリがフォアグラウンドで実行されている場合は、位置情報サービスに現在の場所をクエリすることは良い方法ですが、アプリが一時停止または終了すると、それは選択肢になりません。代わりに、ある程度の精度で位置情報イベントをサブスクライブする必要があります。これにより、デバイスの位置が変更されたときにアプリに通知されます。これらのイベントを受信するスケジュールについて保証はなく、要求する精度とデバイスの移動速度によって異なります。
さらに、場所の取得はコストのかかる操作であり、デバイスのバッテリーをすぐに消耗させる可能性があります。ユーザーの利用可能なバッテリー電力を 1 時間か 2 時間で使い切ることは、アプリをすばやくアンインストールするための非常に良い方法です。可能であれば、重要な位置変更サービスを使用して、最小限の電力消費で精度の低い位置更新を取得する必要があります。さらに精度が必要な場合は、定義された領域に対して境界交差イベントを使用することを検討するか、少なくとも要求された精度を可能な限り下げてください。
場所の更新によって開始されたアプリを実行しなければならない限られた時間内に作業する必要があります。サーバーへのラウンドトリップを行うには、おそらく十分な時間ではありません。ネットワーク接続が既にアクティブで、デバイスのレイテンシがたまたま低い場合は、おそらく応答が返されることがありますが、OS によってアプリが頻繁に終了されることが予想されます。その場合、アプリを再起動する可能性のある位置情報の更新を引き続き受け取るかどうかはわかりません.
アラートのリストをダウンロードしてローカルに表示する代わりに、場所が大幅に変更された場合に、現在の場所を UDP 経由でサーバーに送信することをお勧めします。そうすれば、応答を待たずにネットワーク リクエストを送信できます。これらのリクエストの一部のみが成功しますが、少なくともアプリが終了することはありません。その後、サーバーで受信した場所を処理し、必要に応じてプッシュ通知を送信できます。
サーバー側の変更を行うことができないようです。その場合、できる最善の方法は、アプリの実行時に近くのリージョンのアラートをプリフェッチすることです (バックグラウンドでラウンドトリップを完了することができた場合)。そうすれば、位置情報の更新をそのリストと比較でき、位置情報が更新されるたびにネットワーク リクエストを送信する必要がなくなります。残念ながら、現在の制約の下では信頼できるソリューションを利用できず、ここで窮地に追い込まれているようです。