2

ユーザーの位置をサーバーに定期的に送信する、長時間実行されるバックグラウンド タイマーを実装したいと考えています。

これを行うには、のlocationモードを設定し、アプリケーションがバックグラウンドになったときにUIBackgroundModes呼び出します。beginBackgroundTaskWithExpirationHandlerそしてCLLocationManager、私はstartUpdatingLocation方法を使用します(高精度の位置が必要なので、大幅な変更は使用したくありません)。

しかし、アプリがバックグラウンドになってから約 26 分後に、アプリはサーバーへの位置情報の送信を停止します。しかし、アプリはクラッシュしていないので、アプリをフォアグラウンドにすると、タイマーを再開できます。

26分はiOS 6.1、iPhone 5での実験によるものです。

いくつか質問がありますが、

  1. バックグラウンド タスクの時間制限として知られている 10 分ではなく 26 分後に中断する理由がわかりません。

  2. 16 分前に、backgroundTimeRemainingメソッドは double の最大値を返します。しかし、16 分後には から減少する600ため、10 分後にバックグラウンド タスクを中断します。

beginBackgroundTaskWithExpirationHandler有効期限ハンドラー内で既に呼び出しを試みましたが、使用できません。

この問題の手がかりを持っている人がいれば、大歓迎です。

4

2 に答える 2

6

https://github.com/voyage11/Location

このコードを使用して、呼び出したい時間間隔を設定できます。私は多くのコードを試しましたが、これが最も正確でバッテリーが少ない問題であることがわかりました.これはバックグラウンドの位置情報サービスにも最適です. :)

于 2014-12-20T06:13:25.080 に答える
-1

設定が成功すればUIBackgroundModes、移動中にアプリを長時間バックグラウンドで実行できます。ただし、10分以上(場合によってはそれ以上)動かないと、システム上アプリが停止します。beginBackgroundTaskWithExpirationHandler位置情報が更新されるとアプリは起動しますが、この起動時間は非常に短いため、位置情報更新を処理するメソッドをcal する必要があります 。

于 2014-12-20T03:14:55.690 に答える