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