ユーザーの位置をサーバーに定期的に送信する、長時間実行されるバックグラウンド タイマーを実装したいと考えています。
これを行うには、のlocationモードを設定し、アプリケーションがバックグラウンドになったときにUIBackgroundModes呼び出します。beginBackgroundTaskWithExpirationHandlerそしてCLLocationManager、私はstartUpdatingLocation方法を使用します(高精度の位置が必要なので、大幅な変更は使用したくありません)。
しかし、アプリがバックグラウンドになってから約 26 分後に、アプリはサーバーへの位置情報の送信を停止します。しかし、アプリはクラッシュしていないので、アプリをフォアグラウンドにすると、タイマーを再開できます。
26分はiOS 6.1、iPhone 5での実験によるものです。
いくつか質問がありますが、
バックグラウンド タスクの時間制限として知られている 10 分ではなく 26 分後に中断する理由がわかりません。
16 分前に、
backgroundTimeRemainingメソッドは double の最大値を返します。しかし、16 分後には から減少する600ため、10 分後にバックグラウンド タスクを中断します。
beginBackgroundTaskWithExpirationHandler有効期限ハンドラー内で既に呼び出しを試みましたが、使用できません。
この問題の手がかりを持っている人がいれば、大歓迎です。